Forum: Italian Ruby user group Svuotare carrello prima all'uscita del browser

Posted by Alessandro Mattioli (allemattio)
on 2010-02-28 01:05
salve
è da poco che programmo in ruby on rails
vi spiego il mio problema
ho un sito con un carrello in cui metto gli oggetti in vendita
il carrello è una classe a cui è associato un vettore di items che
contengono le varie quantità di oggetti ordinati e il loro nome
io ho poi una classe prodotti che è un activerecord con un campo
disponibilità

quando aggiungo un prodotto al carrello la disponibilità di prodotti
viene decrementata
ora se svuoto il carrello a mano posso andare a reincrementare la
disponibilità dei prodotti,
ma se chiudo il browser con il carrello che contiene degli oggetti
questo viene svuotato ma la disponibilità degli oggetti non viene
reincrementata..c'è un modo per 'intercettare' la chiusura del browser?
oppure una specie di distruttore della classe carrello in cui possa
scrivere il codice per reincrementare la disponibilità?
grazie a tutti
Posted by Simone R. (athlon)
on 2010-02-28 01:34
Alessandro Mattioli wrote:
> salve
> è da poco che programmo in ruby on rails
> vi spiego il mio problema
> ho un sito con un carrello in cui metto gli oggetti in vendita
> il carrello è una classe a cui è associato un vettore di items che
> contengono le varie quantità di oggetti ordinati e il loro nome
> io ho poi una classe prodotti che è un activerecord con un campo
> disponibilità
> 
> quando aggiungo un prodotto al carrello la disponibilità di prodotti
> viene decrementata
> ora se svuoto il carrello a mano posso andare a reincrementare la
> disponibilità dei prodotti,
> ma se chiudo il browser con il carrello che contiene degli oggetti
> questo viene svuotato ma la disponibilità degli oggetti non viene
> reincrementata..c'è un modo per 'intercettare' la chiusura del browser?
> oppure una specie di distruttore della classe carrello in cui possa
> scrivere il codice per reincrementare la disponibilità?
> grazie a tutti



Quello che devi controllare e' la session , che va in timeout
una volta che il browser e' stato chiuso e non ci sono piu'
attivita' da parte dell' utente

puoi salvarti in sessione l'id del carrello , quando la sessione muore 
sai quale carrello devi svuotare
Posted by Paolo Montrasio (pmontrasio)
on 2010-02-28 11:17
Simone R. wrote:
> Quello che devi controllare e' la session , che va in timeout
> una volta che il browser e' stato chiuso e non ci sono piu'
> attivita' da parte dell' utente
> 
> puoi salvarti in sessione l'id del carrello , quando la sessione muore 
> sai quale carrello devi svuotare

Il principio è quello, ma bada bene che questo non è un'operazione che 
puoi fare da controller, perché il browser chiuso (o la connessione 
internet caduta!) non manderà richieste al server :-)
Hai bisogno di un programma che giri ogni tanto e che verifichi la data 
delle ultime richieste fatte dagli utenti. Devi essertele però segnate 
nel db, magari con un before_filter in ApplicationController.
Tra l'altro per un'operazione del genere è possibile che uno script sql 
sia sufficiente, senza dover far partire un programma ruby con 
script/runner o cose del genere.

Paolo
Posted by Simone R. (athlon)
on 2010-02-28 16:00
pascolando in rete ho trovato qualcosa che forse puo' essere utile

http://www.rubyinside.com/sessiontimeout-a-rails-plugin-to-handle-short-term-session-timeouts-255.html
Posted by Alessandro Mattioli (allemattio)
on 2010-03-01 00:09
mmh..

mi sembra di aver capito quello che mi dite..
ma se io in application.rb aggiungo la riga

sesson_times_out_in 5.minutes

fa quello che ho bisogno io?

il problema però rimane...
come faccio a aggiornare il mio database una volta che l'app è bella che 
terminata?
Posted by Alessandro Mattioli (allemattio)
on 2010-03-01 00:11
Alessandro Mattioli wrote:
> mmh..
> 
> mi sembra di aver capito quello che mi dite..
> ma se io in application.rb aggiungo la riga
> 
> sesson_times_out_in 5.minutes
> 
> fa quello che ho bisogno io?
> 
> il problema però rimane...
> come faccio a aggiornare il mio database una volta che l'app è bella che 
> terminata?

mi auto quoto..c'è un metodo o un evento di application.rb o simile che 
viene chiamato alla terminazione dell'applicazione?

e uno all'inizio?
Please log in before posting. Registration is free and takes only a minute.
Existing account (Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
No account? Register here.