2011-04-23 69 views
5

如何區分回調以便after_create運行一組代碼,但可以說!after_create運行另一組代碼?回調 - after_save但不創建

+0

你到底要達到什麼樣的?據我所知,'!after_create'不是回調函數。看看這裏http://api.rubyonrails.org/classes/ActiveRecord/Callbacks.html – 2011-04-23 20:22:00

+0

@賈丁 - 那是我的觀點。我想知道如何完成一個回調,只有當記錄更新但未創建時纔會觸發回調。 – sscirrus 2011-04-23 22:30:40

回答

19

after_create新對象回調,after_update持久化回調。

+0

這是否回答了上面提到的問題?如果是,請教我如何。 – 2011-04-23 20:22:49

+0

@Jatin據我瞭解的問題,是的。但我同意你的看法,問題措詞有點混亂。 – Voldy 2011-04-23 20:49:19

+0

是的,這個問題還不夠清楚,因爲我們沒有任何爭論。 – 2011-04-23 21:13:28

2

你可以擁有它只能執行基於條件

model.rb

after_create :only_do_if_this 
after_create :only_do_if_that 

def only_do_if_this 
    if do_this? 
    # code... 
    end 
end 

def only_do_if_that 
    if do_that? 
    # code... 
    end 
end 

您還可以添加條件回調本身

after_create :only_do_if_this, :if => proc { |m| m.do_this? } 
after_create :only_do_if_that, :if => proc { |m| m.do_that? } 

def only_do_if_this 
    # code ... 
end 

def only_do_if_that 
    # code... 
end 
+0

有一種方法可以將這兩個條件放在一個回調線上,並且如果任一條件滿足或條件必須分開時仍然執行回調? – 2011-05-18 14:21:29

0

after_create經過多個回調創建新對象

after_update現有對象更新

after_save兼具創造與更新後