At the time of normal operations in rails application, the objects are either updated, created or destroyed or we create our defined methods in the controller.
Rails provide us with some hooks in the object life cycle which we can invoke before or after the execution of these methods so that we can control the flow of our application and data.
These callbacks are methods that are called or get called in certain moments of object's life cycle.
Today we are going to see three callbacks as follows:
At the time when an Active Record object is instantiated, the after_initialize method is always called.
It gets invoked at the time of when a new object is created in order to access the database.
Through this callback we don't have to override the active record function directly which helps in the smooth execution.
class Employee < ApplicationRecord
after_initialize do |employee|
puts "The object has been initialized!"
end
end
as soon as we will initialize the employee object , the after initialize method will be called and it will print the statement on the console like this
>> Employee.new
The object has been initialized!
=> #<Employee id: nil>
The after_find
callback will be always called at the time when Active Record loads a record from the database.
after_find
method is called before after_initialize
if both of them are defined in the controller.
class Employee < ApplicationRecord
after_initialize do |employee|
puts "The object has been initialized!"
end
after_find do |employee|
puts "The object has been found!"
end
end
as soon as we will fire a find query on the employee table and if both after_initialize and after_find methods are defined then first the after_find will be called and after that after_initialize will be called like this.
>> Employee.first
The object has been found!
The object has been initialized!
=> #<Employee id: 1>
So hope this was helpful to understand the after_initialize and after_find callbacks.
0 Comment(s)