ich eine Weile verbrachte einen Fehler aufzublicken stoppen mich diesen Code von der Nutzung. Meine Datenbank wurde jedes Mal zurückgesetzt, wenn ich versuchte, ein Attribut abzufangen und es vor dem Speichern in false
zu ändern.
Ich gebe meine Antwort hier, weil dieser Thread das erste Google-Ergebnis für die Durchführung dieser Aufgabe war, aber nicht das gesamte zurückgehende false
Problem abgedeckt.
Wenn einer Ihrer Callbacks false
zurückgibt, wird alles in der Datenbank zurückgesetzt.
Ich habe versucht, ein Angebot zu erstellen, um nicht in der Datenbank oder @offer.accepted = false
akzeptiert werden. Das Problem war, dass diese Zeile dazu führte, dass die gesamte Methode false zurückgegeben und den gesamten Prozess zurückgesetzt wurde.
Ich reparierte sie durch true
danach in einer impliziten Rückkehr warf
Code, arbeitete:
before_save {|offer| offer.accepted = false; true}
Imbiss: Ihre Rückrufe nicht false
zurückkehren können, wenn Sie wollen, um erfolgreich zu sein.
Quelle: rails 3 : Do i need to give return true in a before_save callback for an object.save to work?
Weitere Informationen zu ActiveRecord Callbacks: http://api.rubyonrails.org/classes/ActiveRecord/Callbacks.html – Zargony
Wenn Sie so viele Hooks haben und/oder viele Operationen an Attributen ausführen, können Sie auch Methoden für sie erstellen und geben die Methodennamen anstelle von Lambdas. Sie können auch [Attributfilter] (http://rubydoc.info/gems/attribute-filters/1.2.2/) sehen, das diesen Prozess vereinfacht, wenn Sie viele Callbacks haben, die Attribute ändern sollen. – siefca