instance method
define_callbacks
Ruby on Rails 4.0.13
Since v2.2.3Signature
define_callbacks(*callbacks)
Define sets of events in the object life cycle that support callbacks.
define_callbacks :validate define_callbacks :initialize, :save, :destroy
Options
-
:terminator- Determines when a before filter will halt the callback chain, preventing following callbacks from being called and the event from being triggered. This is a string to be eval’ed. The result of the callback is available in theresultvariable.define_callbacks :validate, terminator: 'result == false'
In this example, if any before validate callbacks returns
false, other callbacks are not executed. Defaults tofalse, meaning no value halts the chain. -
:skip_after_callbacks_if_terminated- Determines if after callbacks should be terminated by the:terminatoroption. By default after callbacks executed no matter if callback chain was terminated or not. Option makes sense only when:terminatoroption is specified. -
:scope- Indicates which methods should be executed when an object is used as a callback.class Audit def before(caller) puts 'Audit: before is called' end def before_save(caller) puts 'Audit: before_save is called' end end class Account include ActiveSupport::Callbacks define_callbacks :save set_callback :save, :before, Audit.new def save run_callbacks :save do puts 'save in main' end end end
In the above case whenever you save an account the method
Audit#beforewill be called. On the other handdefine_callbacks :save, scope: [:kind, :name]
would trigger
Audit#before_saveinstead. That’s constructed by calling#{kind}_#{name}on the given instance. In this case “kind” is “before” and “name” is “save”. In this context:kindand:namehave special meanings::kindrefers to the kind of callback (before/after/around) and:namerefers to the method on which callbacks are being defined.A declaration like
define_callbacks :save, scope: [:name]
would call
Audit#save.
Parameters
-
callbacksrest
Source
# File activesupport/lib/active_support/callbacks.rb, line 565
def define_callbacks(*callbacks)
config = callbacks.last.is_a?(Hash) ? callbacks.pop : {}
callbacks.each do |callback|
class_attribute "_#{callback}_callbacks"
send("_#{callback}_callbacks=", CallbackChain.new(callback, config))
end
end
Defined in activesupport/lib/active_support/callbacks.rb line 565
· View on GitHub
· Improve this page
· Find usages on GitHub
Defined in ActiveSupport::Callbacks::ClassMethods