Wie Sie wissen, werden before_save
Rückrufe vor before_create
Rückrufe ausgeführt.ist: on =>: gültig für einen Rückruf vor dem Speichern in Rails 3.2.3
Daher haben einige Leute vorgeschlagen, dass in besser wäre before_save :method, :on => :create
anstelle von before_create
zu verwenden, so dass die Callback-Methode zur richtigen Zeit in Bezug auf andere Rückrufe (wie Autosave-Rückrufe) ausgeführt wird. Siehe beispielsweise Pivotal Labs blog post und this StackOverflow answer.
Allerdings, so weit ich sagen kann, erreicht die :on => :create
Option nicht den gewünschten Effekt auf einen Rückruf before_save
. Mit anderen Worten, der Rückruf wird für jeden Speichervorgang ausgeführt, unabhängig davon, ob er erstellt wurde oder nicht.
Die :on => :create
Option tut für before_validation
Rückrufe als gültig erscheinen, though.
Könnte jemand bestätigen, ob die :on => :create
für eine before_save
arbeiten soll? Hat es in früheren Versionen von Rails funktioniert und ist jetzt defekt, oder sind die oben genannten Links einfach falsch?
Angenommen, :on => :create
ist nicht gültig, ist das folgende akzeptabel, und/oder gibt es einen besseren Weg?
before_save :callback_method, :if => :new_record?
Vielen Dank.
legte ich eine PR für Rails strenge Überprüfung der Argumente hinzuzufügen: https://github.com/rails/rails/pull/30919 – seanlinsley