web-dev-qa-db-ja.com

Railsでセッションを空にする/破壊する方法は?

どこにも見つからないようです... Railsでユーザーのセッションを削除/破棄/リセット/空/クリアするにはどうすればよいですか? 1つの値だけでなく、すべての値..

124
tybro0103

すべてをクリアするには、コントローラーでreset_sessionメソッドを使用します。

reset_session

このメソッドのドキュメントは次のとおりです。 http://api.rubyonrails.org/classes/ActionController/Base.html#M000668

内部に格納されているすべてのオブジェクトをクリアし、新しいセッションオブジェクトを初期化することにより、セッションをリセットします。

幸運を!

190
Gdeglin

Railsのセッションはハッシュオブジェクトです。したがって、ハッシュをクリアするために使用可能な関数はすべてセッションで機能します。

session.clear

または特定のキーを破棄する必要がある場合:

session.delete(key)

Rails 3.2でテスト済み

added

session={}に言及されている人々は悪い考えです。 session.clearに関して、Lobatiはコメントします。おそらく、session.clearが行うこと以外にいくつかのクリーンアップを行うため、[session.clear]よりもreset_sessionを使用したほうがよいようです。内部的には、 reset_sessionはsession.destroyを呼び出しますそれ自体がclearと同様に他のものを呼び出します

39
Lavixu

ユーザーのセッションを削除するには

session.delete(:user_id)
6
vjnan369

特定のパラメータのみをクリアするには、次を使用できます。

[:param1, :param2, :param3].each { |k| session.delete(k) }
5
vladCovaliov

このコードをApplicationControllerに追加します

def reset_session
  @_request.reset_session
end

(なぜこのコードが私の問題を解決したのにこのコードに言及していないのかわからない) http://apidock.com/Rails/ActionController/RackDelegation/reset_session

2
David Mesaros