Configuración usando un ejemplo simple: tengo 1 tabla ( Totals
) que contiene la suma de la amount
columna de cada registro en una segunda tabla ( Things
).
Cuando thing.amount
se actualiza, me gustaría simplemente agregar la diferencia entre el valor anterior y el nuevo valor a total.sum
.
Ahora mismo estoy restando self.amount
durante before_update
y sumando self.amount
durante after_update
. Esto deposita demasiada confianza en que la actualización se realice correctamente.
Restricción: no quiero simplemente volver a calcular la suma de todas las transacciones.
Pregunta: Simplemente, me gustaría acceder al valor original durante una after_update
devolución de llamada. ¿Qué formas se te han ocurrido para hacer esto?
Actualización: voy con la idea de Luke Francl. Durante una after_update
devolución de llamada, todavía tiene acceso a los self.attr_was
valores, que es exactamente lo que quería. También decidí ir con una after_update
implementación porque quiero mantener este tipo de lógica en el modelo. De esta manera, no importa cómo decida actualizar las transacciones en el futuro, sabré que estoy actualizando la suma de las transacciones correctamente. Gracias a todos por sus sugerencias de implementación.