Кажется, я нигде не могу его найти ... Как мне удалить / уничтожить / сбросить / очистить / очистить сеанс пользователя в Rails? Не одно значение, а целое.
Как очистить / уничтожить сессию в рельсах?
Ответы (5)
Чтобы очистить все это, используйте метод reset_session в контроллере.
reset_session
Вот документация по этому методу: http://api.rubyonrails.org/classes/ActionController/Base.html#M000668
Сбрасывает сеанс, очищая все объекты, хранящиеся внутри, и инициализируя новый объект сеанса.
Удачи!
сессия в рельсах - это хэш-объект. Следовательно, любая функция, доступная для очистки хэша, будет работать с сессиями.
session.clear
или если необходимо уничтожить определенные ключи:
session.delete(key)
Проверено в рельсах 3.2
добавлено
Люди упомянули session={}, что это плохая идея. Что касается session.clear, Лобати комментирует: похоже, вам, вероятно, лучше использовать reset_session [, чем session.clear], поскольку он выполняет некоторые другие действия по очистке, помимо того, что делает session.clear. На внутреннем уровне
person
Lavixu
schedule
26.07.2013
session.clear или session = {} по сравнению с использованием reset_session. Они идентичны?
- person Peter Berg; 17.01.2014
session = {} ничего не делает, кроме как устанавливает пустую локальную переменную, что создает коварную ошибку в вашем приложении и по-прежнему оставляет сеанс нетронутым.
- person lobati; 11.05.2016
reset_session, поскольку он выполняет некоторые другие действия по очистке, помимо того, что делает session.clear. Внутренне, сам вызывает clear а также кое-что другое.
- person lobati; 03.07.2018
удалить сеанс пользователя
session.delete(:user_id)
Чтобы очистить только определенные параметры, вы можете использовать:
[:param1, :param2, :param3].each { |k| session.delete(k) }
добавьте этот код в свой ApplicationController
def reset_session
@_request.reset_session
end
(Не знаю, почему никто выше просто не упомянул этот код, поскольку он устранил мою проблему) http://apidock.com/rails/ActionController/RackDelegation/reset_session.
@_request.reset_session и reset_session работают и, может быть, делают одно и то же?
- person barlop; 03.07.2018