Module: MongoMapper::Plugins::EmbeddedCallbacks::InstanceMethods

Defined in:
lib/mongo_mapper/plugins/embedded_callbacks.rb

Instance Method Summary collapse

Instance Method Details

#run_callbacks(callback, &block) ⇒ Object



15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/mongo_mapper/plugins/embedded_callbacks.rb', line 15

def run_callbacks(callback, &block)
  embedded_docs = []

  embedded_associations.each do |association|
    embedded_docs += Array(get_proxy(association).send(:load_target))
  end

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