How can I override the attribute assignment in an active record object?
I know you can do this with virtual attributes, but what if the column actually exists?
For example, my model has a raw_topic
column. When raw_topic
is set, I want artist
and song_title
to be set based off of raw_topic
's contents. Ideally, I'd 开发者_JS百科like to override the raw_topic=
method, but rails doesn't seem to like that.
What's the proper way of doing this? Is a callback the only way?
You can do it like this:
def raw_topic=(value)
# do something with raw topic
self[:raw_topic] = value
end
That way you can ensure you still have the raw topic if you need to act on it.
精彩评论