2011-04-23 31 views
5

¿Cómo se pueden separar las devoluciones de llamada para que after_create ejecute un conjunto de código, pero !after_create, por así decirlo, ejecuta otro?Devolución de llamada - after_save pero NO crear

+0

¿Qué es exactamente lo que quiere lograr? En mi conocimiento, '! After_create' no es una devolución de llamada. Mire aquí http://api.rubyonrails.org/classes/ActiveRecord/Callbacks.html –

+0

@Jatin: ese era mi punto. Quería saber cómo realizar una devolución de llamada que solo se dispara cuando se actualiza un registro pero no se crea. – sscirrus

Respuesta

19

after_create devolución de llamada para el objeto nuevo, after_update para uno persistente.

+0

¿Responde eso a la pregunta anterior? Si es así, por favor enséñame cómo. –

+0

@Jatin Según entiendo la pregunta, sí. Pero estoy de acuerdo con usted en que la redacción de una pregunta es un poco confusa. – Voldy

+0

Sí, la pregunta no es lo suficientemente clara, para que podamos discutir por nada. –

2

Puede tener varias devoluciones de llamada que sólo execute basan en las condiciones

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 

También puede añadir la condición de la devolución de llamada en sí

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

¿Hay alguna manera de poner ambos condicionales en una línea de devolución de llamada y todavía ejecutar la devolución de llamada si cualquiera de las condiciones cumple o los condicionales deben estar separados? –

0

after_create Después nuevo objeto creado

after_update después de existir objeto actualizado

after_save Tanto la creación y actualización de

Cuestiones relacionadas