如何在Rails中将update_attributes与自定义setter方法一起使用?

时间:2010-10-04 21:57:54

标签: ruby-on-rails activerecord attributes

我有一个名为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。

1 个答案:

答案 0 :(得分:14)

您必须告知rails您在进行现场修改时更改了属性:

def prefix=(num)
  phone_number_will_change!
  self.phone_number[3..5] = num
end