# Svuotare carrello prima all'uscita del browser

**URL:** <https://www.ruby-forum.com/t/svuotare-carrello-prima-alluscita-del-browser/184279>\
**Category:** IT\
**Created:** [February 28, 2010, 1:05am UTC](https://www.ruby-forum.com/t/svuotare-carrello-prima-alluscita-del-browser/184279 "2010-02-28T01:05:55Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![alexpescara](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/b487fb/32.png) [@alexpescara](https://www.ruby-forum.com/u/alexpescara)\
**Post date:** [February 28, 2010, 1:05am UTC](https://www.ruby-forum.com/t/svuotare-carrello-prima-alluscita-del-browser/184279/1 "2010-02-28T01:05:55Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![alexpescara](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/b487fb/32.png) [@alexpescara](https://www.ruby-forum.com/u/alexpescara)\
**Post date:** [February 28, 2010, 1:34am UTC](https://www.ruby-forum.com/t/svuotare-carrello-prima-alluscita-del-browser/184279/2 "2010-02-28T01:34:28Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![alexpescara](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/b487fb/32.png) [@alexpescara](https://www.ruby-forum.com/u/alexpescara)\
**Post date:** [February 28, 2010, 11:17am UTC](https://www.ruby-forum.com/t/svuotare-carrello-prima-alluscita-del-browser/184279/3 "2010-02-28T11:17:34Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![alexpescara](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/b487fb/32.png) [@alexpescara](https://www.ruby-forum.com/u/alexpescara)\
**Post date:** [March 1, 2010, 12:09am UTC](https://www.ruby-forum.com/t/svuotare-carrello-prima-alluscita-del-browser/184279/4 "2010-03-01T00:09:10Z")

</div>

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?

---

<div class="post-metadata">

**Author:** ![alexpescara](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/b487fb/32.png) [@alexpescara](https://www.ruby-forum.com/u/alexpescara)\
**Post date:** [February 28, 2010, 4:00pm UTC](https://www.ruby-forum.com/t/svuotare-carrello-prima-alluscita-del-browser/184279/5 "2010-02-28T16:00:40Z")

</div>

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](http://www.rubyinside.com/sessiontimeout-a-rails-plugin-to-handle-short-term-session-timeouts-255.html)

---

<div class="post-metadata">

**Author:** ![alexpescara](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/b487fb/32.png) [@alexpescara](https://www.ruby-forum.com/u/alexpescara)\
**Post date:** [March 1, 2010, 12:11am UTC](https://www.ruby-forum.com/t/svuotare-carrello-prima-alluscita-del-browser/184279/6 "2010-03-01T00:11:24Z")

</div>

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?
