Type:
Module
Constants:
CALLBACK_FILTER_TYPES : [:before, :after, :around]

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).

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.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
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:

1
2
3
saving...
- save
saved
build
  • References/Ruby on Rails/Rails/Classes/ActiveSupport/ActiveSupport::Callbacks/ActiveSupport::Callbacks::Filters/ActiveSupport::Callbacks::Filters::After

build(callback_sequence, user_callback, user_conditions, chain_config) Class Public methods

2025-01-10 15:47:30
new
  • References/Ruby on Rails/Rails/Classes/ActiveSupport/ActiveSupport::Callbacks/ActiveSupport::Callbacks::CallbackSequence

new(&call) Class Public methods

2025-01-10 15:47:30
reset_callbacks
  • References/Ruby on Rails/Rails/Classes/ActiveSupport/ActiveSupport::Callbacks/ActiveSupport::Callbacks::ClassMethods

reset_callbacks(name) Instance Public methods Remove all set callbacks for the

2025-01-10 15:47:30
call
  • References/Ruby on Rails/Rails/Classes/ActiveSupport/ActiveSupport::Callbacks/ActiveSupport::Callbacks::CallbackSequence

call(*args) Instance Public methods

2025-01-10 15:47:30
before
  • References/Ruby on Rails/Rails/Classes/ActiveSupport/ActiveSupport::Callbacks/ActiveSupport::Callbacks::CallbackSequence

before(&before) Instance Public methods

2025-01-10 15:47:30
set_callback
  • References/Ruby on Rails/Rails/Classes/ActiveSupport/ActiveSupport::Callbacks/ActiveSupport::Callbacks::ClassMethods

set_callback(name, *filter_list, &block) Instance Public methods Install

2025-01-10 15:47:30
skip_callback
  • References/Ruby on Rails/Rails/Classes/ActiveSupport/ActiveSupport::Callbacks/ActiveSupport::Callbacks::ClassMethods

skip_callback(name, *filter_list, &block) Instance Public methods Skip a

2025-01-10 15:47:30
call
  • References/Ruby on Rails/Rails/Classes/ActiveSupport/ActiveSupport::Callbacks/ActiveSupport::Callbacks::Filters/ActiveSupport::Callbacks::Filters::End

call(env) Instance Public methods

2025-01-10 15:47:30
build
  • References/Ruby on Rails/Rails/Classes/ActiveSupport/ActiveSupport::Callbacks/ActiveSupport::Callbacks::Filters/ActiveSupport::Callbacks::Filters::Before

build(callback_sequence, user_callback, user_conditions, chain_config, filter) Class Public methods

2025-01-10 15:47:30
set_callbacks
  • References/Ruby on Rails/Rails/Classes/ActiveSupport/ActiveSupport::Callbacks/ActiveSupport::Callbacks::ClassMethods

set_callbacks(name, callbacks) Instance Protected methods

2025-01-10 15:47:30