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ść.
136
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ść.
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śniesession.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.źródło
reset_session
, ponieważ wykonuje inne czyszczenie poza tym, cosession.clear
robi. Wewnętrzniereset_session
połączeniasession.destroy
, które same wywołująclear
również inne rzeczy .aby usunąć sesję użytkownika
session.delete(:user_id)
źródło
Aby wyczyścić tylko niektóre parametry, możesz użyć:
[:param1, :param2, :param3].each { |k| session.delete(k) }
źródło
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
źródło
@_request.reset_session
ireset_session
oba działają, a może robię to samo?