在会话中存储用户数据 - 标准实践

时间:2013-09-05 15:51:02

标签: ruby-on-rails session

我在SO和Google上看到了关于存储会话用户数据的一些信息,但大多数都是针对PHP而不是Rails。

另外,我在RailsCasts上看过Dangers of Model in Session

假设我有一个用户登录,我想从用户那里访问一些基本的偏好设置,例如:邮政编码,身高,体重,以及其他10件我想稍后访问的内容。

我应该吗?

  1. 将这10个内容存储在散列会话变量中?

    例如,session[:user_prefs] = User.find(:first)

  2. 只需将用户ID作为sesion变量存储,然后再运行查询以访问邮政编码,身高,体重等?

    例如,session[:user_id] = User.find(:first).id

  3. 或者,我应该做些什么完全不同的事情?

  4. 我不确定这种情况下的标准编码实践或最佳实践是什么。

    任何帮助都会很棒。

1 个答案:

答案 0 :(得分:0)

选项2是要走的路。

选项1为“否”,因为一旦用户信息更新,您的会话数据将与数据库不同步。例如,您可以在用户登录时将这十个字段存储在会话中,稍后在应用程序中,用户更新这十个字段中的一个,现在会话数据与数据库不同步。您可以定义一个在其中一个属性发生更改时更新会话数据的函数,但我认为这会给应用程序增加不必要的额外复杂性。

选项3,我无法想到任何替代此要求的会话。还有其他方法可以实现会话逻辑,但它们只是您已经提供的(通过Rails)会话实现的版本。