2010-03-08 88 views

回答

178

要清除整個事情,請在控制器中使用reset_session方法。

reset_session 

下面是這個方法的文檔:http://api.rubyonrails.org/classes/ActionController/Base.html#M000668

復位通過清除所有 存儲並且 初始化一個新的會話對象中的對象的會話。

祝你好運!

+1

對於基於數據庫的會話(你應該可能使用),你可以通過查詢過期:http://guides.rubyonrails.org/security.html#session-expiry – m33lky 2012-02-24 07:14:51

36

在rails中的會話是一個散列對象。因此,任何可用於清除哈希的函數都可以用於會話。

session.clear 

或 如果特定鍵都被破壞:

session.delete(key) 

測試中軌3.2

+0

任何人有任何想法,這個方法的優點與Gdeglin推薦的? – 2014-01-16 17:00:51

+2

當您想要保留其他參數,但刪除一個特定的鍵值對時,可以使用此選項。 – Lavixu 2014-01-17 05:59:42

+0

我想我指的是使用'session.clear'或'session = {}'與使用'reset_session'。他們是一樣的嗎? – 2014-01-17 12:22:51

5

只清除某些參數,你可以使用:

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

到刪除用戶的會話

session.delete(:user_id) 
+0

小心,您可以從數據庫中刪除用戶記錄! – Arthur 2017-10-09 02:39:53

+0

@Arthur事實並非如此。但是你只會從會話中刪除:user_id鍵而不是整個會話 – 2018-03-06 12:05:15