<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -794,6 +794,14 @@ module MongoRecord
         value = instance_variable_get(&quot;@#{key}&quot;).to_mongo_value
         if value.instance_of? Hash and value[&quot;_ns&quot;]
           value = XGen::Mongo::Driver::DBRef.new(value[&quot;_ns&quot;], value[&quot;_id&quot;])
+        elsif value.instance_of? Array
+          value = value.map {|v|
+            if v.instance_of? Hash and v[&quot;_ns&quot;]
+              XGen::Mongo::Driver::DBRef.new(v[&quot;_ns&quot;], v[&quot;_id&quot;])
+            else
+              v
+            end
+          }
         end
         h[key] = value
       }
@@ -921,7 +929,12 @@ module MongoRecord
       elsif self.class.arrays.keys.include?(sym)
         klazz = self.class.arrays[sym]
         val = [val] unless val.kind_of?(Array)
-        instance_variable_set(ivar_name, val.collect {|v| v.kind_of?(MongoRecord::Base) ? v : klazz.new(v)})
+        instance_variable_set(ivar_name, val.collect {|v|
+                                if v.instance_of? XGen::Mongo::Driver::DBRef
+                                  v = self.class.collection.db.dereference(v)
+                                end
+                                v.kind_of?(MongoRecord::Base) ? v : klazz.new(v)
+                              })
       else
         instance_variable_set(ivar_name, val)
       end</diff>
      <filename>lib/mongo_record/base.rb</filename>
    </modified>
    <modified>
      <diff>@@ -584,6 +584,27 @@ class MongoTest &lt; Test::Unit::TestCase
     assert_not_nil s
     assert_equal 1, s.scores.length
     assert_equal 'changed', s.scores.first.for_course.name
+
+
+    # Now try with has_many
+    score.save
+    s.scores = [score]
+    s.save
+
+    assert_equal 3.5, s.scores.first.grade
+
+    s = Student.find(:first, :conditions =&gt; &quot;name = 'Spongebob Squarepants'&quot;)
+    assert_not_nil s
+    assert_equal 1, s.scores.length
+    assert_equal 3.5, s.scores.first.grade
+
+    score.grade = 4.0
+    score.save
+
+    s = Student.find(:first, :conditions =&gt; &quot;name = 'Spongebob Squarepants'&quot;)
+    assert_not_nil s
+    assert_equal 1, s.scores.length
+    assert_equal 4.0, s.scores.first.grade
   end
 
   def test_subobjects_have_no_ids</diff>
      <filename>tests/test_mongo.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>2b13714eabdf15981df20bb0caacc7a007532bb1</id>
    </parent>
  </parents>
  <author>
    <name>Mike Dirolf</name>
    <email>mike@10gen.com</email>
  </author>
  <url>http://github.com/squeejee/mongo-activerecord-ruby/commit/8efb075ddebe9370a8165a8889434628b337c625</url>
  <id>8efb075ddebe9370a8165a8889434628b337c625</id>
  <committed-date>2009-04-28T12:50:14-07:00</committed-date>
  <authored-date>2009-04-28T12:50:14-07:00</authored-date>
  <message>support for DBRefs w/in has_many as well</message>
  <tree>e541b3b317f4c6facd88aac64c44e735a7d5a684</tree>
  <committer>
    <name>Mike Dirolf</name>
    <email>mike@10gen.com</email>
  </committer>
</commit>
