Risposte:
Per cancellare tutto usa il metodo reset_session in un controller.
reset_session
Ecco la documentazione su questo metodo: http://api.rubyonrails.org/classes/ActionController/Base.html#M000668
Reimposta la sessione cancellando tutti gli oggetti memorizzati e inizializzando un nuovo oggetto sessione.
In bocca al lupo!
session in rails è un oggetto hash. Quindi qualsiasi funzione disponibile per cancellare l'hash funzionerà con le sessioni.
session.clear
o se chiavi specifiche devono essere distrutte:
session.delete(key)
Testato su binari 3.2
aggiunto
La gente ha menzionato session={}
è una cattiva idea. Per quanto riguarda session.clear
, commenta Lobati- Sembra che probabilmente stai meglio usando reset_session [rispetto a session.clear], in quanto fa qualche altra pulizia oltre a ciò che fa session.clear. Internamente, reset_session chiama session.destroy , che a sua volta chiama chiaramente anche altre cose.
reset_session
, come fa qualche altra pulizia oltre a ciò che session.clear
fa. Internamente, reset_session
chiamasession.destroy
, che a sua volta chiama clear
anche altre cose .
Per cancellare solo alcuni parametri, è possibile utilizzare:
[:param1, :param2, :param3].each { |k| session.delete(k) }
aggiungi questo codice al tuo ApplicationController
def reset_session
@_request.reset_session
end
(Non so perché nessuno sopra menziona solo questo codice perché ha risolto il mio problema) http://apidock.com/rails/ActionController/RackDelegation/reset_session
@_request.reset_session
ed reset_session
entrambi funzionano e forse fanno la stessa cosa?