Ответы:
Чтобы очистить все это, используйте метод 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. Внутренне reset_session вызывает session.destroy , который сам вызывает clear, а также некоторые другие вещи.
reset_session
, так как он выполняет другую очистку, помимо того, что session.clear
делает. Внутри себя reset_session
вызываетsession.destroy
, который сам вызывает clear
также некоторые другие вещи .
Чтобы очистить только определенные параметры, вы можете использовать:
[: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
оба работают, и, возможно, делают то же самое?