run_callbacks(kind, options = {}, &block) public

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
Show source
Register or log in to add new notes.