2014-12-20 29 views
1

通過RailsCasts中的身份驗證,有one,我不明白的東西完全基本和重要這是親,對不起 - 你需要訂閱訪問它)。「Restful」資源在rails:session [:user_id] = user.id語法當會話是一個資源,但不是一個模型

他使用電子郵件和加密密碼(has_secure_password)創建用戶模型。

然後他創建一個名爲Sessions的新控制器,並將其聲明爲配置中的資源。即

resources :sessions 

然後,會話控制器內,他定義創建方法是這樣的:

user = find user and authenticate 
if user 
    session[:user_id] = user.id 
else ... 

但是會話作爲模型不存在。例如,如果我打開我的控制檯並寫入

sessions[:user_id] = "hello" 

它拋出。有沒有人有解釋或鏈接到這個我很想念的基本概念?

謝謝!

編輯:謝謝Sanfor。錯字固定,也用於標記加上最重要的答案!

+0

這裏特別令人困惑的事情,進一步的反思是,「會話」與我的SessionsConroller無關(代碼明智)。會話由ActionController維護。因此,我的谷歌搜索被完全誤導了。以防萬一這是對任何人有用的評論! –

回答

0

我想你已經複製會話作爲會話在你的問題,是否正確?屏幕輪播被修改,所以你需要訂閱我不是現在,所以無法確認它比什麼評論說。

現在到實際的答案,會話是Rails內部參考手頭上的實際會話,如here所述,因此您無法看到它創建的模型。

+0

感謝堆。那個鏈接正是我所問的那個不知道的。 –

+0

嗨@託尼賴特如果這或任何答案已解決您的問題,請考慮[接受它](http://meta.stackexchange.com/q/5234/179419)通過點擊複選標記。這向更廣泛的社區表明,您已經找到了解決方案,併爲答覆者和您自己提供了一些聲譽。沒有義務這樣做。 –

0

最簡單的說明:

session只是一個哈希並作爲cookie存儲。 (除非你特別指示Rails將它存儲在數據庫中)。模型通常基於ActiveRecord並具有一些行爲。

你可以通過簡單

session[:some_thing] = "Info for session" 
    session[:store_this_too] = "Some other info to track for this session" 

session哈希由控制器相關的類/模塊創建和rails console添加到它不加載它們。因此,它在控制檯中不可用。

這是一個漂亮的舊的Railscasts這解釋了一點。而this採用基於模型的方法。請記住,他們來自過去。

+0

謝謝roob。這是一個清晰簡明的解釋。我對控制檯不瞭解。真的很有幫助。 –