3
紅寶石2.1.8 軌3.2.18Rails的ActiveRecord的條件回調問題
我想運行一個回調時,只有當一個特定的屬性已經改變保存記錄。例如
before_save :do_the_thing, if: :my_attr_changed?
但是,當我改變my_attr
和保存,do_the_thing
沒有得到 調用。然而,如果我做同樣的事情,但是:
before_save :do_the_thing
def do_the_thing
puts my_attr_changed?
end
它在日誌中輸出「true」。在這裏很困惑。任何幫助讚賞。謝謝。
如果你使用一個lambda,而不是一個符號,會發生什麼? 'before_save:do_the_thing,如果: - > {my_attr_changed? }' – max
雖然在這裏使用符號應該工作。您是否創建了一個複製問題的測試,並且完全確定錯誤不在方法中? – max
符號應該工作 –