2013-10-07 6 views
17

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

+0

Come potrebbero esserci dei cambiamenti quando qualcosa viene appena creato? –

+0

I campi che vanno da zero a un valore valido. –

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')' –

Problemi correlati