Как очистить / уничтожить сеанс в рельсах? - PullRequest
123 голосов
/ 09 марта 2010

Я не могу найти его нигде ... Как мне удалить / уничтожить / сбросить / очистить / очистить сеанс пользователя в Rails? Не одно значение, а целое ...

Ответы [ 5 ]

189 голосов
/ 09 марта 2010

Чтобы очистить все это, используйте метод reset_session в контроллере.

reset_session

Вот документация по этому методу: http://api.rubyonrails.org/classes/ActionController/Base.html#M000668

Сбрасывает сеанс, удаляя все объекты, хранящиеся в и инициализация нового объекта сеанса.

Удачи!

39 голосов
/ 26 июля 2013

сессия в рельсах является хеш-объектом. Следовательно, любая функция, доступная для очистки хэша, будет работать с сессиями.

session.clear

или если определенные ключи должны быть уничтожены:

session.delete(key)

Проверено в рельсах 3,2

1010 * добавлены *

Люди упомянули session={} - это плохая идея. Что касается session.clear, комментирует Лобати. Похоже, вам лучше использовать reset_session [чем session.clear], так как он выполняет некоторые другие действия по очистке помимо того, что делает session.clear. Внутренне, reset_session вызывает session.destroy , , который сам вызывает clear, а также некоторые другие вещи.

6 голосов
/ 25 августа 2015

для удаления сеанса пользователя

session.delete(:user_id)
5 голосов
/ 20 февраля 2014

Чтобы очистить только определенные параметры, вы можете использовать:

[:param1, :param2, :param3].each { |k| session.delete(k) }
2 голосов
/ 01 апреля 2016

добавьте этот код в свой ApplicationController

def reset_session
  @_request.reset_session
end

(Не знаю, почему никто выше не упомянул этот код как это исправило мою проблему) http://apidock.com/rails/ActionController/RackDelegation/reset_session

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...