Come sapete, le chiamate before_save
vengono eseguite prima delle chiamate before_create
.È: on =>: crea una valida per un callback before_save in Rails 3.2.3
Pertanto, alcune persone hanno suggerito che in sarebbe meglio utilizzare before_save :method, :on => :create
invece di before_create
in modo che il metodo di callback viene eseguito al momento giusto in relazione ad altri callback (come callback salvataggio automatico). Vedere, ad esempio, questo Pivotal Labs blog post e this StackOverflow answer.
Tuttavia, per quanto posso dire, l'opzione :on => :create
non ottiene l'effetto desiderato su un callback before_save
. In altre parole, la richiamata viene eseguita per ogni salvataggio indipendentemente dal fatto che si tratti di una creazione o meno.
L'opzione :on => :create
fa sembrano essere valido per before_validation
callback, però.
Qualcuno potrebbe confermare se il :on => :create
deve funzionare per un before_save
? Funzionava nelle versioni precedenti di Rails e ora è rotto, o i link di cui sopra sono semplicemente sbagliati?
Supponendo che :on => :create
non sia valido, è il seguente accettabile e/o c'è un modo migliore?
before_save :callback_method, :if => :new_record?
Grazie.
ho presentato un PR per Rails aggiungere rigoroso controllo argomento: https://github.com/rails/rails/pull/30919 – seanlinsley