Method: ActiveSupport::Callbacks#run_callbacks
- Defined in:
- lib/activesupport-2.2.2/lib/active_support/callbacks.rb
#run_callbacks(kind, options = {}, &block) ⇒ Object
Runs all the callbacks defined for the given options.
If a block is given it will be called after each callback receiving as arguments:
* the result from the callback
* the object which has the callback
If the result from the block evaluates to false, the callback chain is stopped.
Example:
class Storage
include ActiveSupport::Callbacks
define_callbacks :before_save, :after_save
end
class ConfigStorage < Storage
before_save :pass
before_save :pass
before_save :stop
before_save :pass
def pass
puts "pass"
end
def stop
puts "stop"
return false
end
def save
result = run_callbacks(:before_save) { |result, object| result == false }
puts "- save" if result
end
end
config = ConfigStorage.new
config.save
Output:
pass
pass
stop
276 277 278 |
# File 'lib/activesupport-2.2.2/lib/active_support/callbacks.rb', line 276 def run_callbacks(kind, = {}, &block) self.class.send("#{kind}_callback_chain").run(self, , &block) end |