Svuotare carrello prima all'uscita del browser

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

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

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 :slight_smile:
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

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?

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

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?