Ole*_*ann 25 settings user-controls ruby-on-rails
我想知道存储用户设置的最佳方法是什么?对于Web 2.0应用程序,我希望用户能够选择某些设置.目前只是在接收电子邮件通知时.
最简单的方法是创建一个模型"设置",并为每个设置都有一个列,然后与用户建立1-1关系.
但有更好的解决方案吗?将信息存储在用户表本身中可能更好吗?或者我应该使用带有"settings_name"和"settings_value"的表格来完全打开存储在那里的设置类型(添加选项时无需运行任何迁移)?
你有什么意见?
谢谢
joa*_*lho 13
如果您使用PostgreSQL,最好的解决方案是使用https://github.com/diogob/activerecord-postgres-hstore/.这是一种在数据库中存储哈希的简单,快速和可靠的方法.由于它不仅仅是一个序列化的文本字段,您也可以在其上进行搜索,而不需要像在HasEasy中那样创建新表.
def User
serialize :preferences, ActiveRecord::Coders::Hstore
end
user = User.create preferences: { theme: "navy" }
user.preferences['theme']
Run Code Online (Sandbox Code Playgroud)
Jon*_*ian 11
"开放"表方法使得难以使用AR进行建模,因为您必须担心数据类型(布尔值,整数,字符串等).我总是在用户表上添加prefs作为列,然后将它们移出到user_preferences表,如果它们"太多"的话.它很简单,而且很容易使用.
ban*_*tic 10
如果用户设置无法找到(例如,通过User.find_by_x_preference),您还可以将它们作为哈希存储在序列化列中.实际上,这是rails docs(http://www.railsbrain.com/api/rails-2.3.2/doc/index.html?a=M002334&name=serialize#)中描述的用例.
class User < ActiveRecord::Base
serialize :preferences
end
u = User.new
u.preferences = {:favorite_color => "green", :favorite_book => "Moby Dick"}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10226 次 |
| 最近记录: |