class Song < ActiveRecord::Base
# Uses an integer of seconds to hold the length of the song
def length=(minutes)
write_attribute(:length, minutes.to_i * 60)
end
def length
read_attribute(:length)/60
end
end
这是一个简单的例子,由rails api doc。覆盖导轨模型中的所有默认访问器
是否可以覆盖模型的所有属性而不覆盖每个属性?
在这种情况下,我有存储国际化内容(标题,title_portuguse,title_english)字段的表,然后我想修改此方法的行为以根据语言显示数据而不修改视图。 – 2010-11-03 14:01:10
你可以看看globalize2插件,它可以使用像content.title这样的本地化属性。 我不太喜欢他们的做法。他们实质上创建了一个content_translations表,其中所有已翻译的属性都是列,然后载入匹配I18n.locale的翻译记录。 'content.title'然后成为'content.translation(locale).title'的代理。 在我的下一个本地化应用程序中,我将跳过插件并手动创建这些表并创建ContentTranslation模型。这更清楚,你知道你在处理什么样的对象。 – balu 2010-11-03 14:10:33