Los callbacks son métodos que se invocan en ciertos momentos del ciclo de vida de un modelo: cuando se crea, cuando se actualiza, cuando se elimina, etc.
Para definir un callback debes realizar dos pasos:
Registrar el callback.
Escribir el método que se va a ejecutar cuando ocurra el callback.
Por ejemplo, si queremos imprimir "Artículo creado" después de que se cree un artículo haríamos lo siguiente:
class Article < ApplicationRecordafter_crate :print_messageprivatedef print_messageputs "Artículo creado!"endend
En este caso el método print_message
se va a ejecutar después de que un artículo sea creado:
$ rails c> Article.create(name: "Primer artículo")Artículo creado!
Los callbacks se pueden utilizar para toda clase de tareas:
Enviar correos
Actualizar campos calculados.
Llamar a servicios externos.
Crear otros registros en otras tablas.
Entre muchos otros!
Existe una gran variedad de callbacks que puedes utilizar en tus modelos. Los más importantes son:
Nombre | ¿Cúando se ejecuta |
before_create | Antes de crear el registro |
after_create | Después de crear el registro |
before_update | Antes de actualizar el registro |
after_update | Después de actualizar el registro |
before_save | Antes de crear o actualizar |
after_save | Después de crear o actualizar |
before_destroy | Antes de eliminar el registro |
after_destroy | Después de eliminar el registro |
before_validation | Antes de que se valide el registro |
after_validation | Después de que se valida el registro |
Si cualquier before_
callback retorna false
o lanza una excepción, la operación se cancela.
Los after_
callbacks solo pueden detener la operación lanzando una excepción.
Se recomienda lanzar ActiveRecord::Rollback
o ActiveRecord::RecordInvalid
.