Callbacks are hooks into the lifecycle of an
object that allow you to trigger logic before or after an alteration of the
object state.
Mixing in this module allows you to define callbacks in your class.
Example:
class Storage
include ActiveSupport::Callbacks
define_callbacks :before_save, :after_save
end
class ConfigStorage < Storage
before_save :saving_message
def saving_message
puts "saving..."
end
after_save do |object|
puts "saved"
end
def save
run_callbacks(:before_save)
puts "- save"
run_callbacks(:after_save)
end
end
config = ConfigStorage.new
config.save
Output:
saving...
- save
saved
Callbacks from parent classes are inherited.
Example:
class Storage
include ActiveSupport::Callbacks
define_callbacks :before_save, :after_save
before_save :prepare
def prepare
puts "preparing save"
end
end
class ConfigStorage < Storage
before_save :saving_message
def saving_message
puts "saving..."
end
after_save do |object|
puts "saved"
end
def save
run_callbacks(:before_save)
puts "- save"
run_callbacks(:after_save)
end
end
config = ConfigStorage.new
config.save
Output:
preparing save
saving...
- save
saved