Відповіді:
Для очищення всього використовуйте метод 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 , який сам називає зрозумілим, а також деякі інші речі.
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
обидва працюють, і, можливо, роблять те саме?