【问题标题】:Storing User Data in Session - Standard Practice在会话中存储用户数据 - 标准实践
【发布时间】:2013-09-05 15:51:02
【问题描述】:

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

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

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

我应该吗?

  1. 将这 10 个东西存储在一个散列会话变量中?

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

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

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

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

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

任何帮助都会很棒。

【问题讨论】:

  • 如果您专门使用默认的 cookie 存储,大型会话对象显然不起作用。会话也可以在数据库中,并且您将有相同的查找惩罚,它只会被自动处理。没有“应该”,只有“选择”。

标签: ruby-on-rails session


【解决方案1】:

选项 2 是要走的路。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-01-09
    • 1970-01-01
    • 2011-02-14
    • 2012-10-26
    • 2020-07-30
    • 1970-01-01
    • 1970-01-01
    • 2011-03-31
    相关资源
    最近更新 更多