module Callbacks
Ruby on Rails 8.0.4
Active Support Callbacks
Callbacks are code hooks that are run at key points in an object’s life cycle. The typical use case is to have a base class define a set of callbacks relevant to the other functionality it supplies, so that subclasses can install callbacks that enhance or modify the base functionality without needing to override or redefine methods of the base class.
Mixing in this module allows you to define the events in the object’s life cycle that will support callbacks (via ClassMethods#define_callbacks), set the instance methods, procs, or callback objects to be called (via ClassMethods#set_callback), and run the installed callbacks at the appropriate times (via run_callbacks).
By default callbacks are halted by throwing :abort. See ClassMethods#define_callbacks for details.
Three kinds of callbacks are supported: before callbacks, run before a certain event; after callbacks, run after the event; and around callbacks, blocks that surround the event, triggering it when they yield. Callback code can be contained in instance methods, procs or lambdas, or callback objects that respond to certain predetermined methods. See ClassMethods#set_callback for details.
class Record
include ActiveSupport::Callbacks
define_callbacks :save
def save
run_callbacks :save do
puts "- save"
end
end
end
class PersonRecord < Record
set_callback :save, :before, :saving_message
def saving_message
puts "saving..."
end
set_callback :save, :after do |object|
puts "saved"
end
end
person = PersonRecord.new
person.save
Output:
saving...
- save
saved
Namespace
Modules
Extends
Constants
Methods (defined here)
Private methods (1)
Show private methods Implementation detail — not part of the public API.
Used by
Included by (15)
- AbstractController::Callbacks
- ActionCable::Channel::Callbacks
- ActionCable::Connection::Callbacks
- ActionDispatch::Callbacks
- ActionMailbox::Callbacks
- ActionMailer::Callbacks
- ActiveJob::Callbacks
- ActiveModel::Callbacks
- ActiveModel::Validations::Callbacks
- ActiveRecord::ConnectionAdapters::AbstractAdapter
- ActiveSupport::CurrentAttributes
- ActiveSupport::ExecutionWrapper
- ActiveSupport::Testing::SetupAndTeardown
- Rails::Application::RoutesReloader
- Rails::Engine
Methods (inherited)
From ActiveSupport::Concern
(3)
- # class_methods
- # included
- # prepended
From ActiveSupport::DescendantsTracker
(3)
- # descendants
- self. descendants
- self. subclasses