<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -5,6 +5,39 @@ module MongoMapper
         @_values = v.map { |e| e.kind_of?(EmbeddedDocument) ? e.attributes : e }
         reset
       end
+      
+      def build(opts={})
+        owner = @owner
+        child = @association.klass.new(opts)
+        child.class_eval do
+          define_method(owner.class.name.underscore) do
+            owner
+          end
+        end
+        child._parent_document = owner
+        self &lt;&lt; child
+        child
+      end
+      
+      def find(opts)
+        case opts
+        when :all
+          self
+        when String
+          if load_target
+            child = @target.detect {|item| item.id == opts}
+            if child
+              owner = @owner
+              child.class_eval do
+                define_method(owner.class.name.underscore) do
+                  owner
+                end
+              end
+            end
+            child
+          end
+        end
+      end
 
       def &lt;&lt;(*docs)
         if load_target</diff>
      <filename>lib/mongomapper/associations/many_embedded_proxy.rb</filename>
    </modified>
    <modified>
      <diff>@@ -16,6 +16,13 @@ class ManyEmbeddedProxyTest &lt; Test::Unit::TestCase
     project.addresses.push Address.new
     project.addresses.size.should == 2
   end
+  
+  should &quot;allow finding :all embedded documents&quot; do
+    project = Project.new
+    project.addresses &lt;&lt; Address.new
+    project.addresses &lt;&lt; Address.new
+    project.save
+  end
 
   should &quot;be embedded in document on save&quot; do
     sb = Address.new(:city =&gt; 'South Bend', :state =&gt; 'IN')
@@ -120,6 +127,13 @@ class ManyEmbeddedProxyTest &lt; Test::Unit::TestCase
       doc.people.first.pets.first._parent_document.should == doc
     end
 
+    should &quot;create properly-named reference to parent document when building off association proxy&quot; do
+      person = RealPerson.new
+      pet = person.pets.build
+      person.should == pet.real_person
+    end
+
+
     should &quot;create a reference to the parent document for all embedded documents&quot; do
       meg = Person.new(:name =&gt; &quot;Meg&quot;)
       sparky = Pet.new(:name =&gt; &quot;Sparky&quot;, :species =&gt; &quot;Dog&quot;)
@@ -136,4 +150,22 @@ class ManyEmbeddedProxyTest &lt; Test::Unit::TestCase
       from_db.people.first.pets.first._parent_document.should == doc
     end
   end
+  
+  should &quot;allow retrieval via find(:all)&quot; do
+    meg = Person.new(:name =&gt; &quot;Meg&quot;)
+    sparky = Pet.new(:name =&gt; &quot;Sparky&quot;, :species =&gt; &quot;Dog&quot;)
+
+    meg.pets &lt;&lt; sparky
+    
+    meg.pets.find(:all).should include(sparky)
+  end
+  
+  should &quot;allow retrieval via find(id)&quot; do
+    meg = Person.new(:name =&gt; &quot;Meg&quot;)
+    sparky = Pet.new(:name =&gt; &quot;Sparky&quot;, :species =&gt; &quot;Dog&quot;)
+
+    meg.pets &lt;&lt; sparky
+    
+    meg.pets.find(sparky.id).should == sparky
+  end
 end
\ No newline at end of file</diff>
      <filename>test/functional/associations/test_many_embedded_proxy.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>05633151d0de16e5d540be2e86317b480274567c</id>
    </parent>
  </parents>
  <author>
    <name>John Nunemaker</name>
    <email>nunemaker@gmail.com</email>
  </author>
  <url>http://github.com/andrewtimberlake/mongomapper/commit/3e4e26760d66887227193afa75de5fe7c2eef0ad</url>
  <id>3e4e26760d66887227193afa75de5fe7c2eef0ad</id>
  <committed-date>2009-10-02T06:27:47-07:00</committed-date>
  <authored-date>2009-10-02T06:27:47-07:00</authored-date>
  <message>added features to make embedded document collections compatible with Rails resource_controller nested routes and normal ActiveRecord association_proxy behavior. added
a reference to parent doc named based on the parent class

Conflicts:

	test/functional/associations/test_many_embedded_proxy.rb</message>
  <tree>9388ad42d098a97f29fcc8f6d2fb8c665690b215</tree>
  <committer>
    <name>John Nunemaker</name>
    <email>nunemaker@gmail.com</email>
  </committer>
</commit>
