aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/test
diff options
context:
space:
mode:
authorEugene Kenny <elkenny@gmail.com>2018-03-24 22:18:05 +0000
committerEugene Kenny <elkenny@gmail.com>2018-03-24 22:18:05 +0000
commit0cdeda5826fc7cf26de404dcdd6d747531a32b6c (patch)
treee0f7b0ed61048c76a9e216177f43b50290cbe678 /activerecord/test
parentff6d498704cff88b823871d20c5dfcaa3345ead7 (diff)
downloadrails-0cdeda5826fc7cf26de404dcdd6d747531a32b6c.tar.gz
rails-0cdeda5826fc7cf26de404dcdd6d747531a32b6c.tar.bz2
rails-0cdeda5826fc7cf26de404dcdd6d747531a32b6c.zip
Don't unset foreign key when preloading missing record
When a belongs to association's target is set, its foreign key is now updated to match the new target. This is the correct behaviour when a new record is assigned, but not when the existing record is preloaded. As long as we mark the association as loaded, we can skip setting the target when the record is missing and avoid clobbering the foreign key.
Diffstat (limited to 'activerecord/test')
-rw-r--r--activerecord/test/cases/associations/eager_test.rb2
1 files changed, 2 insertions, 0 deletions
diff --git a/activerecord/test/cases/associations/eager_test.rb b/activerecord/test/cases/associations/eager_test.rb
index f18c6177ac..6e0cf30092 100644
--- a/activerecord/test/cases/associations/eager_test.rb
+++ b/activerecord/test/cases/associations/eager_test.rb
@@ -1218,6 +1218,7 @@ class EagerAssociationTest < ActiveRecord::TestCase
client = assert_queries(2) { Client.preload(:firm).find(c.id) }
assert_no_queries { assert_nil client.firm }
+ assert_equal c.client_of, client.client_of
end
def test_preloading_empty_belongs_to_polymorphic
@@ -1225,6 +1226,7 @@ class EagerAssociationTest < ActiveRecord::TestCase
tagging = assert_queries(2) { Tagging.preload(:taggable).find(t.id) }
assert_no_queries { assert_nil tagging.taggable }
+ assert_equal t.taggable_id, tagging.taggable_id
end
def test_preloading_through_empty_belongs_to