Gibt es eine Möglichkeit, Änderungen am Modell nach after_commit zu verfolgen, wenn ein Datensatz erstellt wird? Ich habe versucht, schmutziges Modul zu verwenden und war in der Lage, Änderungen zu verfolgen, als der Datensatz aktualisiert wurde, aber wenn Datensatz erstellt wird, werden Änderungen nicht aufgezeichnet.Verfolgen von Modelländerungen in after_commit: on =>: Rückruf erstellen
17
A
Antwort
45
Sie können die Methode rails changed?
nicht verwenden, da sie immer false zurückgibt. Verwenden Sie die Methode previous_changes
, um Änderungen nach dem Festschreiben der Transaktion zu verfolgen. Es wird ein Hash mit Attributnamen als Schlüssel zurückgegeben. Sie können dann überprüfen, ob Ihr attribute_name im Hash ist:
after_commit :foo
def foo
if previous_changes[attribute_name]
#do your task
end
end
+4
danke! Und um zu überprüfen, ob der Hash Ihr Attribut enthält, könnten Sie etwas wie 'if @ item.previous_changes.has_key? (' Attribute_name ') 'tun –
Verwandte Themen
- 1. Zurückrollen Modelländerungen von Aktion
- 2. after_create: foo vs after_commit: bar,: auf =>: create
- 3. Testing after_commit mit RSpec und spöttischen
- 4. Rails feuert nicht mein after_commit Callback
- 5. ist: on =>: gültig für einen Rückruf vor dem Speichern in Rails 3.2.3
- 6. emberjs Ereignis für als Modelländerungen
- 7. Skip nach_commit on destroy in rails
- 8. ng-Modelländerungen des Typs in Optionsfeld
- 9. Ereignis "Angular 2 change" - Modelländerungen
- 10. Verfolgen von angemeldeten Benutzern
- 11. Masstransit sagas und Entity Framework Repository Modelländerungen
- 12. Unterschied zwischen after_create, after_save und after_commit in Schienen Rückrufe
- 13. Schienen routing -: on =>: Sammlung
- 14. Was bedeutet -%> in Ruby on Rails, verglichen mit%>
- 15. Ruby on Rails: Kind Erstellen von Objekten
- 16. Erstellen von Methoden on the fly
- 17. Erstellen von Bohnen On-Demand mit Frühling
- 18. Windsor.Castle: Erstellen von Komponenten On-Demand + Kontextinformationen
- 19. jlabel on fly erstellen
- 20. Verwendung mehrerer Rückrufe für Rails (: after_commit)?
- 21. Implementieren von Rückruf in Qt
- 22. Gerüstete Controller und Ansichten mit Modelländerungen aktualisieren
- 23. Vor- und Nachteile von Listener-/Observer-Ansätzen zur Benachrichtigung Modelländerungen
- 24. Wie sollte ich einen Rückruf erstellen
- 25. Javsacript Objektverweis von jquery Rückruf
- 26. NSURLConnection Rückruf Rückruf
- 27. wissen, was Ereignis ausgelöst, um die after_commit eines Activerecord-Modell
- 28. Erstellen von Pojo-Klasse und Rückruf zum Nachrüsten
- 29. ActiveRecord in Stapeln? After_commit produziert O (n) Problem
- 30. Javascript: Erstellen Sie Rückruf für Funktion
Wie könnte es Änderungen geben, wenn gerade etwas erstellt wird? –
Die Felder, die von Null zu einem gültigen Wert gehen. –