在Ruby中存储用户首选项

时间:2011-08-03 10:35:49

标签: ruby-on-rails

您将在Rails应用中存储用户首选项的位置?

我应该将它放在用户模型中还是只使用序列化

2 个答案:

答案 0 :(得分:1)

这实际上取决于您的应用。它有多大,将来会增长,有多少设置,设置数量会增加等等。

如果您只有几个设置(我的个人限制为5),您可以将它们保存在User模型中。优点:易于实施。缺点:新设置需要更改数据库,即每次添加新设置或更改现有设置时进行迁移。

如果您有更多设置,并且他们要更改或增加数量,您可能更容易将它们保存在自己的模型中。最好的方法是使用某种现有的键值存储,或伪造自己的存储。专业版:您可以轻松添加新设置或更改现有设置。缺点:实施起来比较困难,对于小型应用来说可能有点过头了。

答案 1 :(得分:1)

您还可以将所有设置放在单个属性中,并在模型中序列化该属性。它基本上包含您想要的任意数量的用户设置的哈希。随你随地添加/删除它们很容易。

示例:

用户模型

serialize :settings

get_settings(type => :filter)
end

set_settings(type => :filter, data => {})
end

用户表

text settings

用户行

:filter: 
    :statuses: 
      - "status 1"
      - "status 2"

:pagination
    :per_page: 20
    :last_viewed_page: 10

您可以像这样使用它:

set_settings(:pagination, {:per_page => 10, :last_viewed_page => 2})
user_pagination = get_settings(:pagination, {:pagination}
user_pagination[:per_page]
user_pagination[:last_viewed_page]