Salve a tutti,
Stò implementando un carrello spesa in un’applicazione rails.
Tutto procede bene fin quando non accade che l’utente abbandoni la
sessione
senza svuotare manualmente il carrello.
In alcuni controller ho un filtro così impostato:
before_filter :get_cart, :except => :empty_cart
Dove get_cart è definito come:
def get_cart
if session[:cart]
@cart = Cart.find(session[:cart])
else
if logged_in?
@cart = Cart.new
@cart.user = current_user
@cart.save!
session[:cart] = @cart.id
else
@cart = nil
end
end
end
Il metodo get_cart fissa il record nel database che rimane lì finchè
l’utente non procede al checkout o allo svuotamento del carrello.
Al momento non mi viene in mente nulla per far sì che, alla chiusura del
browser ad esempio, venga eliminato il carrello dell’utente posto che
questo sia vuoto.
Voi come fareste? Ci vorrebbe qualcosa che facesse da garbage collector
per
i carrelli rimasti orfani…
Grazie in anticipo.
On 5/3/07, Carmine M. [email protected] wrote:
Voi come fareste? Ci vorrebbe qualcosa che facesse da garbage collector
per
i carrelli rimasti orfani…
Secondo me i carrelli con i prodotti dovrebbero rimanere in sessione e
non
nel db, e tu dovresti registrare nel db solo gli ordini effettuati. In
questo modo daresti la possibilità all’utente di ritrovare i prodotti
selezionati anche diversi giorni prima, sia nel caso di utente loggato
che
di utente sconosciuto, il che è piuttosto comodo.
Dai un’occhiata al “Depot Application” su Agile Web D. with
Rails.
Ciao,
Tommaso
Ciao Matteo,
Matteo V. wrote:
[…snip…]
Poi niente ti vieta di eseguire periodicamente uno script che elimina i
carrelli pi� vecchi di tot. L’unica accortezza che ti consiglio � di
scrivere lo script in ruby (e non in sql!) ed eseguirlo con
script/runner.
In questo modo puoi usare i tuoi modelli ActiveRecord, con tutte le loro
validazioni.
Interessante, non conosco “script/runner” ma stasera gli dò un’occhiata.
Grazie 1000!
On 5/4/07, Tommaso P. [email protected] wrote:
questo modo daresti la possibilità all’utente di ritrovare i prodotti
selezionati anche diversi giorni prima, sia nel caso di utente loggato che
di utente sconosciuto, il che è piuttosto comodo.
Per fare in modo che il carrello persista è giusto salvare il carrello nel
db. Guarda come fa Amazon che è il negozio online più popolare del pianeta:
il tuo carrello viene conservato per mesi!
Poi niente ti vieta di eseguire periodicamente uno script che elimina i
carrelli più vecchi di tot. L’unica accortezza che ti consiglio è di
scrivere lo script in ruby (e non in sql!) ed eseguirlo con
script/runner.
In questo modo puoi usare i tuoi modelli ActiveRecord, con tutte le loro
validazioni.
M
Dai un’occhiata al “Depot Application” su Agile Web D. with
Rails.
Ciao,