module ActiveSupport::Callbacks::ClassMethods
def __update_callbacks(name, filters = [], block = nil) #:nodoc:
CallbackChain.
This is used internally to append, prepend and skip callbacks to the
def __update_callbacks(name, filters = [], block = nil) #:nodoc: type = CALLBACK_FILTER_TYPES.include?(filters.first) ? filters.shift : :before options = filters.last.is_a?(Hash) ? filters.pop : {} filters.unshift(block) if block ([self] + ActiveSupport::DescendantsTracker.descendants(self)).reverse.each do |target| chain = target.send("_#{name}_callbacks") yield target, chain.dup, type, filters, options target.__reset_runner(name) end end