module MongoMapper::Plugins::EmbeddedCallbacks

Public Instance Methods

run_callbacks(callback, *args, &block) click to toggle source
Calls superclass method
# File lib/mongo_mapper/plugins/embedded_callbacks.rb, line 63
def run_callbacks(callback, *args, &block)
  if self.class.embedded_callbacks_on? and embedded_associations.length > 0
    embedded_docs = embedded_associations.map do |association|
      Array(get_proxy(association).send(:load_target))
    end.flatten(1)

    block = embedded_docs.inject(block) do |chain, doc|
      if doc.class.respond_to?("_#{callback}_callbacks")
        lambda { doc.run_callbacks(callback, *args, &chain) }
      else
        chain
      end
    end
  end

  super callback, *args, &block
end