diff options
author | Eugene Kenny <elkenny@gmail.com> | 2018-03-24 22:18:05 +0000 |
---|---|---|
committer | Eugene Kenny <elkenny@gmail.com> | 2018-03-24 22:18:05 +0000 |
commit | 0cdeda5826fc7cf26de404dcdd6d747531a32b6c (patch) | |
tree | e0f7b0ed61048c76a9e216177f43b50290cbe678 /activerecord/test/cases | |
parent | ff6d498704cff88b823871d20c5dfcaa3345ead7 (diff) | |
download | rails-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/cases')
-rw-r--r-- | activerecord/test/cases/associations/eager_test.rb | 2 |
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 |