diff options
author | pivotal <pivotal@lexington.flood.pivotallabs.com> | 2008-08-26 09:20:24 -0700 |
---|---|---|
committer | Michael Koziarski <michael@koziarski.com> | 2008-08-27 11:22:15 +0200 |
commit | 9dbde4f5cbd0617ee6cce3e41d41335f9c9ce3fd (patch) | |
tree | 4021ec03167071a1c2736b831f9cd9b2b99b288b /activerecord/lib/active_record | |
parent | 6ec07e0737c3099056fc11fe43f4f19dde3770a6 (diff) | |
download | rails-9dbde4f5cbd0617ee6cce3e41d41335f9c9ce3fd.tar.gz rails-9dbde4f5cbd0617ee6cce3e41d41335f9c9ce3fd.tar.bz2 rails-9dbde4f5cbd0617ee6cce3e41d41335f9c9ce3fd.zip |
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 <michael@koziarski.com>
[#895 state:committed]
Diffstat (limited to 'activerecord/lib/active_record')
-rwxr-xr-x | activerecord/lib/active_record/associations.rb | 5 | ||||
-rw-r--r-- | activerecord/lib/active_record/associations/has_one_through_association.rb | 4 |
2 files changed, 6 insertions, 3 deletions
diff --git a/activerecord/lib/active_record/associations.rb b/activerecord/lib/active_record/associations.rb index f915daafba..4d935612ca 100755 --- a/activerecord/lib/active_record/associations.rb +++ b/activerecord/lib/active_record/associations.rb @@ -1270,10 +1270,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("set_#{reflection.name}_target") do |target| diff --git a/activerecord/lib/active_record/associations/has_one_through_association.rb b/activerecord/lib/active_record/associations/has_one_through_association.rb index c846956e1f..b78bd5d931 100644 --- a/activerecord/lib/active_record/associations/has_one_through_association.rb +++ b/activerecord/lib/active_record/associations/has_one_through_association.rb @@ -22,6 +22,10 @@ module ActiveRecord def find_target super.first + end + + def reset_target! + @target = nil end end end |