您将在Rails应用中存储用户首选项的位置?
我应该将它放在用户模型中还是只使用序列化
答案 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]