mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
Fixed an error triggered by a reload followed by a foreign key assignment.
Signed-off-by: Michael Koziarski <michael@koziarski.com>
This commit is contained in:
parent
79f55de9c5
commit
9d7f186f74
2 changed files with 13 additions and 1 deletions
|
@ -1268,7 +1268,11 @@ module ActiveRecord
|
||||||
|
|
||||||
if association_proxy_class == BelongsToAssociation
|
if association_proxy_class == BelongsToAssociation
|
||||||
define_method("#{reflection.primary_key_name}=") do |target_id|
|
define_method("#{reflection.primary_key_name}=") do |target_id|
|
||||||
instance_variable_get(ivar).reset if instance_variable_defined?(ivar)
|
if instance_variable_defined?(ivar)
|
||||||
|
if association = instance_variable_get(ivar)
|
||||||
|
association.reset
|
||||||
|
end
|
||||||
|
end
|
||||||
write_attribute(reflection.primary_key_name, target_id)
|
write_attribute(reflection.primary_key_name, target_id)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -194,6 +194,14 @@ class AssociationProxyTest < ActiveRecord::TestCase
|
||||||
assert_equal david, welcome.author
|
assert_equal david, welcome.author
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_assigning_association_id_after_reload
|
||||||
|
welcome = posts(:welcome)
|
||||||
|
welcome.reload
|
||||||
|
assert_nothing_raised do
|
||||||
|
welcome.author_id = authors(:david).id
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
def test_reload_returns_assocition
|
def test_reload_returns_assocition
|
||||||
david = developers(:david)
|
david = developers(:david)
|
||||||
assert_nothing_raised do
|
assert_nothing_raised do
|
||||||
|
|
Loading…
Reference in a new issue