C'è un modo per tenere traccia delle modifiche al modello su after_commit quando viene creato un record? Ho provato a utilizzare il modulo dirty e sono stato in grado di tenere traccia delle modifiche quando il record è stato aggiornato, ma quando viene creato un record le modifiche non vengono registrate.Tracciamento delle modifiche del modello in after_commit: on =>: crea callback
17
A
risposta
45
Non è possibile utilizzare il metodo rotaie changed?
, poiché restituirà sempre false. Per tenere traccia delle modifiche dopo il commit della transazione, utilizzare il metodo previous_changes
. Restituirà un hash con nome attributo come chiave. Puoi quindi controllare se il tuo attributo_nome è nell'hash:
after_commit :foo
def foo
if previous_changes[attribute_name]
#do your task
end
end
+4
grazie! E per verificare se l'hash contiene il tuo attributo, potresti fare qualcosa di simile a 'if @ item.previous_changes.has_key? ('Attribute_name')' –
Come potrebbero esserci dei cambiamenti quando qualcosa viene appena creato? –
I campi che vanno da zero a un valore valido. –