Callbacks en Ruby on Rails

Se pueden realizar acciones “programadas” antes o después de cualquier acción en el controlador de la vista o del modelo.

Controladores

Se puede poner acciones que se realicen  antes o después de una, varias o todas las acciones. Los posibles caso serian:

  • before_action ( antes de que realices la acción que pides…)
  • after_action ( después de que realices la acción que pides…)

Y se podrían combinar con:

  • except (excepto cuando llames a los métodos…)
  • only (solo cuando llames a los métodos…)

 

En este ejemplo antes de cada acción del controlador excepto la de index y la de new, se ejecutará la acción declarada privada set_article:

Modelos

Ejecutar una acción antes de que ciertas acciones pasen en el modelo:

  • before_save ( antes de guardar un registro en la base de datos…)
  • after_save ( después de guardar un registro en la base de datos…)
  • before_create ( antes de crear un registro en la base de datos…)
  • after_create ( después de crear un registro en la base de datos…)
  • before_validation (antes de validar un registro)
  • ….

Ejemplo:

En este ejemplo antes de la creación de cada articulo en la bbdd, inicializa el atributo total_quantity a 0.

**Como extra, en la vista llama a una acción del modelo para sumar una visita cada vez que se muestra el articulo.

Articles Controller

Articles Model

 

Documentación