我有一个名为Contact
的模型,其中包含一个名为phone_number
的属性。我有一些自定义的setter方法,比如
def prefix=(num)
self.phone_number[3..5] = num
end
当我调用@contact.update_attributes({:prefix => '510'})
时,我没有收到任何错误,@contact
被更改,但更改不会进入数据库。我已经尝试使用attr_accessible
来专门允许使用这些setter方法无效。
有没有办法让update_attributes
为我工作?我正在使用Rails 2.3.8。
答案 0 :(得分:14)
您必须告知rails您在进行现场修改时更改了属性:
def prefix=(num)
phone_number_will_change!
self.phone_number[3..5] = num
end