Method: ActiveSupport::Callbacks::ClassMethods#skip_callback

Defined in:
lib/active_support/callbacks.rb

#skip_callback(name, *filter_list, &block) ⇒ Object

Skip a previously set callback. Like set_callback, :if or :unless options may be passed in order to control when the callback is skipped.

class Writer < Person
   skip_callback :validate, :before, :check_membership, :if => lambda { self.age > 18 }
end


516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
# File 'lib/active_support/callbacks.rb', line 516

def skip_callback(name, *filter_list, &block)
  __update_callbacks(name, filter_list, block) do |target, chain, type, filters, options|
    filters.each do |filter|
      filter = chain.find {|c| c.matches?(type, filter) }

      if filter && options.any?
        new_filter = filter.clone(chain, self)
        chain.insert(chain.index(filter), new_filter)
        new_filter.recompile!(options, options[:per_key] || {})
      end

      chain.delete(filter)
    end
    target.send("_#{name}_callbacks=", chain)
  end
end