我在SO和Google上看到了关于存储会话用户数据的一些信息,但大多数都是针对PHP而不是Rails。
另外,我在RailsCasts上看过Dangers of Model in Session。
假设我有一个用户登录,我想从用户那里访问一些基本的偏好设置,例如:邮政编码,身高,体重,以及其他10件我想稍后访问的内容。
我应该吗?
将这10个内容存储在散列会话变量中?
例如,session[:user_prefs] = User.find(:first)
只需将用户ID作为sesion变量存储,然后再运行查询以访问邮政编码,身高,体重等?
例如,session[:user_id] = User.find(:first).id
或者,我应该做些什么完全不同的事情?
我不确定这种情况下的标准编码实践或最佳实践是什么。
任何帮助都会很棒。
答案 0 :(得分:0)
选项2是要走的路。
选项1为“否”,因为一旦用户信息更新,您的会话数据将与数据库不同步。例如,您可以在用户登录时将这十个字段存储在会话中,稍后在应用程序中,用户更新这十个字段中的一个,现在会话数据与数据库不同步。您可以定义一个在其中一个属性发生更改时更新会话数据的函数,但我认为这会给应用程序增加不必要的额外复杂性。
选项3,我无法想到任何替代此要求的会话。还有其他方法可以实现会话逻辑,但它们只是您已经提供的(通过Rails)会话实现的版本。