2011-08-30 104 views
0

我一直在試圖弄清楚在rails中何時調用活動記錄的每個回調。Rails Active Record回撥

我的具體問題是:before_save是否被調用過。例如,如果你做一個創建。

更廣泛的方法是何時何地被稱爲。也可以說你在回調中修改了現有的對象,你將不得不重新保存,並且你可以在回調中強制保存,這樣可以節省調用save_callbacks的費用......你可以看到我要去哪裏。

回答

1

我不完全知道你的意思,但如果你想改變一個回調內在的東西,就值得保存,做一個before_save回調,並且不會明確保存,因爲您知道該項目將在下一次保存。

after_save你最好不要改變任何東西並保存,因爲確實會再次觸發回調,並導致無限循環。

它可以有條件雖然申報回調,這可能會解決你的問題,以及:

before_save :do_something, :unless => some_condition 

更多的例子可以發現here

無論如何,如果這仍然不清楚或者不完全符合您的情況:如果您舉一個更實際的例子,討論這個更容易。