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.clearrobi. Wewnętrznie reset_sessionpołączeniasession.destroy , które same wywołują clearró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_sessioni reset_sessionoba działają, a może robię to samo?