所以,爲了表現,我使用數據庫會話。我認爲,雖然會話是服務器端,但我也可以在會話中存儲常用的對象。所以,我存儲了current_user,current_account和current_user權限的序列化版本。這是一個好的設計決定嗎?有沒有更好的辦法?
用戶模型掌握了很多權限方法(比如user.can_do_whatever),但是因爲我試圖提高效率,並且在會話中存儲了常見的東西(這可以減少數據庫訪問) ,是否有意義/違反任何設計標準(在每次請求時)將會話存儲在current_user中的實例變量中?
截至目前,我想不出任何替代品。
我聽說你不應該這樣做(在會話中存儲對象),但我不記得理由是什麼(除了明顯的「事情不同步」問題,這應該很容易足以應對,如果你小心)。我會看看我是否可以再次找到該引用... – 2012-03-22 19:06:23
好吧,從current_user訪問的東西如果它們不同步並不重要,導致我從當前用戶使用的唯一屬性是id ,角色和權限組。所以,如果這些事情發生了變化,要求他們重新登錄是不是很好? = \ – NullVoxPopuli 2012-03-22 19:17:08
也許,我可以在我的users_controller的更新方法中檢查一些需要重新登錄的字段,然後只更新會話數據 – NullVoxPopuli 2012-03-22 19:30:09