<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -1111,10 +1111,9 @@ module ActiveRecord
               association.create_through_record(new_value)
               self.send(reflection.name, new_value)
             else
-              association.replace(new_value)              
+              association.replace(new_value)
+              instance_variable_set(ivar, new_value.nil? ? nil : association)
             end
-
-            instance_variable_set(ivar, new_value.nil? ? nil : association)
           end
 
           define_method(&quot;set_#{reflection.name}_target&quot;) do |target|</diff>
      <filename>activerecord/lib/active_record/associations.rb</filename>
    </modified>
    <modified>
      <diff>@@ -22,6 +22,10 @@ module ActiveRecord
     
       def find_target
         super.first
+      end
+
+      def reset_target!
+        @target = nil
       end        
     end        
   end</diff>
      <filename>activerecord/lib/active_record/associations/has_one_through_association.rb</filename>
    </modified>
    <modified>
      <diff>@@ -101,4 +101,13 @@ class HasOneThroughAssociationsTest &lt; ActiveRecord::TestCase
     assert_equal clubs(:crazy_club), members[0].sponsor_club
   end
 
+  def test_uninitialized_has_one_through_should_return_nil_for_unsaved_record
+    assert_nil Member.new.club
+  end
+
+  def test_assigning_association_correctly_assigns_target
+    new_member = Member.create(:name =&gt; &quot;Chris&quot;)
+    new_member.club = new_club = Club.create(:name =&gt; &quot;LRUG&quot;)
+    assert_equal new_club, new_member.club.target
+  end
 end</diff>
      <filename>activerecord/test/cases/associations/has_one_through_associations_test.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>b4d13a97cd90cd453119f7deb264fc6c1b190c10</id>
    </parent>
  </parents>
  <author>
    <name>pivotal</name>
    <email>pivotal@lexington.flood.pivotallabs.com</email>
  </author>
  <url>http://github.com/rails/rails/commit/e710902f26a2eed7adb22082067df449b9641d00</url>
  <id>e710902f26a2eed7adb22082067df449b9641d00</id>
  <committed-date>2008-08-27T02:24:45-07:00</committed-date>
  <authored-date>2008-08-26T09:20:24-07:00</authored-date>
  <message>Fix two has_one :through errors

* Set the association target on assignment;
* Reset target to nil on reset, rather than empty array.

Signed-off-by: Michael Koziarski &lt;michael@koziarski.com&gt;
[#895 state:committed]</message>
  <tree>10741d1229503cc9a0a4cb8878584c539f73d0b3</tree>
  <committer>
    <name>Michael Koziarski</name>
    <email>michael@koziarski.com</email>
  </committer>
</commit>
