ActiveRecord - Callbacks

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.

Definiendo callbacks

Para definir un callback debes realizar dos pasos:
  1. 1.
    Registrar el callback.
  2. 2.
    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 < ApplicationRecord
after_crate :print_message
private
def print_message
puts "Artículo creado!"
end
end
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!

¿Para qué sirven los callbacks?

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!

Callbacks disponibles

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

Deteniendo la operación

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.