我很好奇,如果有宝石或做每个模型设置的方式。例如,用户偏好。ActiveRecord实例设置
我想每个模型都有默认值(比如一个类属性),但可以定义(在另一张桌子上!我不想在我的模型上使用可序列化的字段)。
例如:
user = User.find(1)
user.settings.newsletter # => true
会有对UserSetting一个模型,其具有键=>字符串,值=>串,类型=>字符串(布尔值,日期,串等等的一个模式.. 。)
UPDATE:
这里是我的解决方案,这到底。支持设置值类型(布尔,时间等)
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
看起来不错,只需要.try(:value) –
@RobertRoss哎呀,是的。修正了。谢谢。 – MrTheWalrus
如果您对最终结果感兴趣,请更新原文。 –