1

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

此外,我在 RailsCasts 的 Session 中观看了 Dangers of Model 。

假设我有一个登录的用户,我想访问用户的一些基本首选项,例如:邮政编码、身高、体重,也许还有其他 10 个我想稍后访问的东西。

我是不是该?

  1. 将这 10 件事存储在散列会话变量中?

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

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

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

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

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

任何帮助都会很棒。

4

1 回答 1

1

选项2是要走的路。

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

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

于 2013-09-05T16:05:48.547 回答