Mi piacerebbe creare una funzione di callback nei binari che viene eseguita dopo il salvataggio di un modello.Come rilevare le modifiche degli attributi dal modello?
Ho questo modello, rivendicazione che ha un attributo 'status', che cambia a seconda dello stato del credito, valori possibili sono pendenti, approvato, approvato, respinto
Il database ha 'stato' con il default valore di 'in sospeso'.
Vorrei eseguire determinate attività dopo che il modello è stato creato la prima volta o aggiornato da uno stato a un altro, a seconda dello stato da cui viene modificato.
La mia idea è quella di avere una funzione nel modello:
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
La mia domanda è come faccio assegno per il valore precedente prima del cambiamento all'interno del modello?
Questo non funzionerà dopo il salvataggio del modello, che è quello che ha chiesto. –
@TomRossi, le chiamate 'dirty' funzionano in' after_save' (sia in Rails 2.3 che in 3.x). L'ho usato diverse volte. –
@TomRossi, i flag dirty vengono ripristinati dopo il commit, quindi non saranno disponibili nei callback 'after_commit' introdotti in Rails 3.x. Certamente funzioneranno in 'after_save'. –