這是非常基本的,但不起作用。我想添加一個回調函數(after_save)來提升字段輸入。軌道上升
在我的模型,我有:
after_save :upcase_tax_label
def upcase_tax_label
self.tax1_label.upcase!
self.tax2_label.upcase!
end
所以,當我編輯應該upcase價值和CAPS渲染。但不是。怎麼了?感謝您的幫助
這是非常基本的,但不起作用。我想添加一個回調函數(after_save)來提升字段輸入。軌道上升
在我的模型,我有:
after_save :upcase_tax_label
def upcase_tax_label
self.tax1_label.upcase!
self.tax2_label.upcase!
end
所以,當我編輯應該upcase價值和CAPS渲染。但不是。怎麼了?感謝您的幫助
after_save
將在模型已經保存到數據庫後運行upcase
方法。換句話說,它只是在保存完成後提升內存中的對象屬性。這不是你想要的。
你想改用before_save
,使該對象被寫入到數據庫之前的屬性upcased:
before_save :upcase_tax_label
private
def upcase_tax_label
tax1_label.upcase!
tax2_label.upcase!
end
底線是,你必須明確地保存在要做出的變化的模型數據庫。在那之前,你只是在玩內存中的一個對象。
before_save
將工作。然而,在這種情況下編寫一個自定義setter通常被認爲是更好的風格。它看起來像這樣:
def tax1_label=(val)
write_attribute(:tax1_label, val.upcase)
end
def tax2_label=(val)
write_attribute(:tax2_label, val.upcase)
end
同意。奧利維爾,你更有可能讓人們繼續回答你接受他們答案的問題。 :) – Shaun 2011-01-26 22:00:53