2011-04-23 10 views
5

W jaki sposób można oddzielić wywołania zwrotne, aby after_create działał jeden zestaw kodu, ale !after_create, że tak powiem, uruchamia inny?Oddzwanianie - after_save, ale NIE tworzy

+0

Co dokładnie chcesz osiągnąć? W mojej wiedzy '! After_create' nie jest wywołaniem zwrotnym. Zajrzyj tutaj http://api.rubyonrails.org/classes/ActiveRecord/Callbacks.html –

+0

@Jatin - to był mój punkt widzenia. Chciałem wiedzieć, jak wykonać wywołanie zwrotne, które jest uruchamiane tylko wtedy, gdy rekord jest aktualizowany, ale nie jest tworzony. – sscirrus

Odpowiedz

19

after_create wywołanie zwrotne dla nowego obiektu, after_update dla tego, który pozostał.

+0

Czy to odpowiada na pytanie zadane powyżej? Jeśli tak, proszę, naucz mnie. –

+0

@Jatin Jak rozumiem pytanie, tak. Ale zgadzam się z tobą, że treść pytania jest trochę zagmatwana. – Voldy

+0

Tak, to pytanie nie jest wystarczająco jasne, abyśmy nie kłócili się o nic. –

2

Można mieć wiele wywołań zwrotnych, które realizują wyłącznie na podstawie warunków

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 

Można również dodać warunek do zwrotnego samego

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

Czy istnieje sposób umieszczenia obu tych warunków warunkowych na jednej linii oddzwaniania i nadal wykonywania wywołania zwrotnego, jeśli którykolwiek warunek spełni warunek, lub czy warunki warunkowe muszą być oddzielne? –

0

after_create Po nowy obiekt utworzony

after_update Po istniejącego obiektu aktualizowane

after_save Zarówno tworzenie i aktualizację

Powiązane problemy