2012-03-13 101 views
1

在我的Rails應用程序中,我有after_update回調。但是,當我的記錄首次使用save方法創建並使用update_attributes更新時,會執行此回調。ruby​​ on rails after_update回調掛鉤問題

所以我想要一種方法,當它要更新方法時必須調用回調/方法,但是當它要創建以及更新方法時,它正在執行。

我認爲update_attribute也會在內部調用一個保存方法,因爲這個問題即將到來。

有沒有什麼辦法可以在記錄更新和保存時調用我的鉤子。

我發現使用attr_accessors的一種方式,但我想一些其他的方式維護這些標誌將是我的應用程序

回答

0

after_update模型的更新後僅被稱爲非常困難。爲了在模型創建時調用它,必須在模型上調用.save後更新其屬性。 .update_attribute.update_attributes不是模型的創建,而是實際更新模型。 .update_attribute在內部調用.save方法。調用.save以保存模型的狀態,新的或更新的。當你調用它時,ActiveRecord將新狀態寫入數據庫。當創建或更新一個模型,它總是做線槽.save method

1

這個怎麼樣

after_update do |model| 
    model.name = model.name.capitalize unless model.new_record? 
end