【发布时间】:2011-12-26 11:46:39
【问题描述】:
我很好奇是否有宝石或方法可以进行每个模型的设置。例如,用户偏好。
我希望每个模型都有默认值(比如一个类属性),但可以定义(在另一个表上!我不希望我的模型上有一个可序列化的字段)。
例如:
user = User.find(1)
user.settings.newsletter # => true
会有一个 UserSetting 模型,其模式为 key => string、value => string、type => string(布尔、日期、字符串等)
更新:
这是我最后的解决方案。支持设置的值类型(布尔值、时间等)
def setting(key, whiny=true)
s = user_settings.where(:key => key).first
if s
case s.value_type
when 'Boolean'
s.value.to_i == 1
when 'Time'
Time.parse(s.value)
else
s.value
end
else
if whiny
raise NameError, "Setting key #{key} does not exist for #{name}."
else
nil
end
end
end
【问题讨论】:
标签: ruby-on-rails activerecord