2010-03-27 32 views
4

我知道你可以用虚拟属性来做到这一点,但是如果该列实际存在?如何覆盖活动记录对象中的属性分配?

例如,我的模型有一个raw_topic列。当设置raw_topic时,我想根据raw_topic的内容设置artistsong_title。理想情况下,我想重写raw_topic=方法,但轨道似乎不喜欢那样。

这样做的正确方法是什么?回拨是唯一的方法吗?

+0

我在过去做过类似的事情,“铁轨似乎不喜欢这个”的意思是什么,当你尝试它时你有错误吗? – Corey 2010-03-27 05:58:04

回答

9

你可以这样说:

def raw_topic=(value) 
    # do something with raw topic 
    self[:raw_topic] = value 
end 

这种方式可以确保您仍然有原始的话题,如果你需要采取行动。