Como ya sabe, las devoluciones de llamada before_save
se ejecutan antes de before_create
devoluciones de llamada.Is: on =>: create valid para una devolución de llamada before_save en Rails 3.2.3
Por lo tanto, algunas personas han sugerido que sería mejor usar before_save :method, :on => :create
en lugar de before_create
para que el método de devolución de llamada se ejecute en el momento adecuado en relación con otras devoluciones de llamada (como autoguardar devoluciones de llamada). Consulte, por ejemplo, Pivotal Labs blog post y this StackOverflow answer.
Sin embargo, hasta donde puedo decir, la opción :on => :create
no logra el efecto deseado en una devolución de llamada before_save
. En otras palabras, la devolución de llamada se ejecuta para cada guardado independientemente de si se trata de una creación o no.
La opción :on => :create
hace parece ser válido para before_validation
devoluciones de llamada, sin embargo.
¿Alguien podría confirmar si se supone que el :on => :create
funciona para un before_save
? ¿Funcionó en versiones anteriores de Rails y ahora está roto, o los enlaces mencionados anteriormente simplemente se confunden?
Suponiendo que :on => :create
no es válido, ¿es aceptable lo siguiente y/o existe una forma mejor?
before_save :callback_method, :if => :new_record?
Gracias.
me presentó un PR de rieles para agregar un estricto chequeo de argumentos: https://github.com/rails/rails/pull/30919 – seanlinsley