Ho notato che Rails non attiva il callback after_initialize
quando il simbolo di callback viene passato come input.ActiveRecord: non chiama after_initialize quando il nome del metodo viene passato come simbolo
Il codice seguente non funziona.
class User < ActiveRecord::Base
after_initialize :init_data
def init_data
puts "In init_data"
end
end
Il codice sotto funziona.
class User < ActiveRecord::Base
def after_initialize
init_data
end
def init_data
puts "In init_data"
end
end
Qualcuno può spiegare questo comportamento?
Nota 1
L'ActiveRecord documentation dice quanto segue riguardo after_initialize
:
Unlike all the other callbacks, after_find and after_initialize will
only be run if an explicit implementation is defined (def after_find).
In that case, all of the callback types will be called.
Anche se si afferma che after_initialize richiede esplicita implementazione, trovo la seconda frase nel paragrafo precedente ambiguo, vale a dire In that case, all of the callback types will be called.
Che cos'è all of the call back types
?
L'esempio di codice nella documentazione ha un esempio che non fa uso esplicito implementazione:
after_initialize EncryptionWrapper.new
Ho provato a fare il mio metodo di callback privato, e ho ancora avuto lo stesso comportamento. –