instance method
define_callbacks
Ruby on Rails 3.1.12
Since v2.2.3Signature
define_callbacks(*callbacks)
Define sets of events in the object lifecycle 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 to “false”, meaning no value halts the chain. -
:rescuable- By default, after filters are not executed if the given block or a before filter raises an error. By setting this option totrueexception raised by given block is stored and after executing all the after callbacks the stored exception is raised. -
: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 611
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))
__define_runner(callback)
end
end
Defined in activesupport/lib/active_support/callbacks.rb line 611
· View on GitHub
· Improve this page
· Find usages on GitHub
Defined in ActiveSupport::Callbacks::ClassMethods