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

mui*_*bot 7 activerecord attributes ruby-on-rails

我有一个叫做Contact带有属性的模型phone_number.我有一些自定义的setter方法,如

def prefix=(num)  
  self.phone_number[3..5] = num  
end
Run Code Online (Sandbox Code Playgroud)

当我打电话时@contact.update_attributes({:prefix => '510'}),我没有得到任何错误并且@contact被更改,但是更改不会进入数据库.我已经尝试使用attr_accessible特别允许使用这些setter方法无济于事.

有办法update_attributes为我工作吗?我正在使用Rails 2.3.8.

Har*_*tty 14

在进行现场修改时,您必须通知rails已更改属性:

def prefix=(num)
  phone_number_will_change!
  self.phone_number[3..5] = num
end 
Run Code Online (Sandbox Code Playgroud)