Me gustaría crear una función de devolución de llamada en los rieles que se ejecuta después de guardar un modelo.Cómo detectar cambios de atributo del modelo?
que tienen este modelo, Reclamación que tiene un atributo 'estado', que cambia en función del estado de la reclamación, los valores posibles están pendientes, aprobado, aprobado, rechazado
La base de datos tiene 'estado' con el valor por defecto valor de 'pendiente'.
Me gustaría realizar ciertas tareas después de que el modelo se crea la primera vez o se actualiza de un estado a otro, dependiendo de qué estado cambie.
Mi idea es tener una función en el modelo:
after_save :check_state
def check_state
# if status changed from nil to pending (created)
do this
# if status changed from pending to approved
performthistask
end
Mi pregunta es ¿cómo puedo comprobar el valor anterior antes del cambio en el modelo?
Esto no funcionará después de guardar el modelo, que es lo que pidió. –
@TomRossi, las llamadas 'dirty' funcionan en' after_save' (ambas en Rails 2.3 y 3.x). Lo he usado varias veces –
@TomRossi, las banderas sucias se restablecen después de la confirmación, por lo que no estarán disponibles en las devoluciones de llamada 'after_commit' introducidas en Rails 3.x. Ciertamente funcionarán en 'after_save'. –