ruby-on-rails - initialize - rails models
Rails: Excepción en after_create deteniendo guardar (1)
Pregunta simple. Tengo un modelo ActiveRecord en el que quiero realizar el procesamiento posterior DESPUÉS de que se guarde el registro. Así que en el modelo tengo un método queue_for_processing que pega un trabajo en mi cola de Resque. Para que esto se ejecute después de que mi registro se haya conservado correctamente, he escrito lo siguiente en mi modelo:
after_create :queue_for_processing
Bastante simple. Pensé que todo estaba funcionando como se esperaba, EXCEPTO que anoche, mi servidor redis falló y las cosas salieron mal. Mis expectativas eran que el registro aún se guardaría y que luego podría procesar el trabajo manualmente. Pero el método queue_for_processing está lanzando una excepción (comportamiento esperado) e impidiendo que el registro se guarde.
¿Estoy entendiendo mal cómo funciona after_create? ¿O es correcto mi comprensión y algo funky está sucediendo?
Gracias.
Sí, todas las devoluciones de llamada están envueltas en una transacción.
Básicamente, lo siguiente causará un retroceso:
- devuelve falso desde
before_save
o devoluciones de llamada similares - excepción en
before_save
o devoluciones de llamada similares - excepción en
after_save
o devoluciones de llamada similares (after_create)
Lo siguiente NO causa una reversión:
- devuelve falso desde
after_save
o devoluciones de llamada similares - excepción en
after_commit
Si no desea que una excepción cause un retroceso, use after_commit