Nie mogę go nigdzie znaleźć ... Jak usunąć / zniszczyć / zresetować / opróżnić / wyczyścić sesję użytkownika w Railsach? Nie tylko jedna wartość, ale całość.
Odpowiedzi:
Aby wyczyścić całość, użyj metody reset_session w kontrolerze.
reset_session
Oto dokumentacja dotycząca tej metody: http://api.rubyonrails.org/classes/ActionController/Base.html#M000668
Resetuje sesję, usuwając wszystkie przechowywane w niej obiekty i inicjując nowy obiekt sesji.
Powodzenia!
sesja w railsach jest obiektem haszującym. Dlatego każda funkcja dostępna do czyszczenia skrótu będzie działać z sesjami.
session.clear
lub jeśli trzeba zniszczyć określone klucze:
session.delete(key)
Testowany na szynach 3.2
dodany
Ludzie, o których wspominali, session={}
to zły pomysł. Odnośnie session.clear
, komentarze Lobati - Wygląda na to, że prawdopodobnie lepiej jest użyć reset_session [niż session.clear], ponieważ robi to inne czyszczenie poza tym, co robi session.clear. Wewnętrznie reset_session wywołuje session.destroy , co samo w sobie wywołuje clear, a także inne rzeczy.
reset_session
, ponieważ wykonuje inne czyszczenie poza tym, co session.clear
robi. Wewnętrznie reset_session
połączeniasession.destroy
, które same wywołują clear
również inne rzeczy .
Aby wyczyścić tylko niektóre parametry, możesz użyć:
[:param1, :param2, :param3].each { |k| session.delete(k) }
Dodaj ten kod do ApplicationController
def reset_session
@_request.reset_session
end
(Nie wiem, dlaczego nikt powyżej nie wspomniał o tym kodzie, ponieważ rozwiązał mój problem) http://apidock.com/rails/ActionController/RackDelegation/reset_session
@_request.reset_session
i reset_session
oba działają, a może robię to samo?