我很好奇,如果有寶石或做每個模型設置的方式。例如,用戶偏好。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
如果您對最終結果感興趣,請更新原文。 –