6
我有一個名爲Contact
的模型,其屬性名爲phone_number
。我有一些自定義的setter方法如如何在Rails中使用update_attributes和自定義setter方法?
def prefix=(num)
self.phone_number[3..5] = num
end
當我打電話@contact.update_attributes({:prefix => '510'})
,我沒有得到任何錯誤和@contact
得到改變,但變化不會使他們對數據庫的方式。我試過使用attr_accessible
專門允許使用這些設置方法無濟於事。
有沒有辦法讓update_attributes
爲我工作?我正在使用Rails 2.3.8。
呸!每次都能讓我感到舒服。謝謝,Kandada。 – muirbot 2010-10-05 20:30:56
如果您在方法的末尾調用'super num',則不需要'phone_number_will_change!'。 – Hendrik 2017-01-23 14:31:44
@Hendrik這裏我們試圖更新字符串。所以它不會通過AR骯髒的基礎。實際的屬性是'phone_number',但你正在更新前綴。 'prefix'沒有'super',因爲它不是DB屬性。看看AR Dirty文檔:http://api.rubyonrails.org/classes/ActiveModel/Dirty.html – 2017-01-23 20:48:01