I noticed that Rails doesn't trigger after_initialize
callback when the callback symbol is passed as input.
The code below doesn't work.
class User < ActiveRecord::Base
after_initialize :init_data
def init_data
puts "In init_data"
end
end
The code below works.
class User < ActiveRecord::Base
def after_initialize
init_data
end
def init_data
puts "In init_data"
end
end
Can somebody explain this behavior?
Note 1
The ActiveRecord documentation says the following about 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.
Though it is stated that after_initialize requires explicit implementation, I find the second sentence in the above paragraph ambiguous, i.e. In that case, all of
the callback types will be called.
What is all of the call back types
?
The code sample in the documentation has an example that doesn't use explicit implementation:
after_initialize EncryptionWrapper.new