diff options
author | Ryuta Kamizono <kamipo@gmail.com> | 2017-10-30 23:55:48 +0900 |
---|---|---|
committer | Ryuta Kamizono <kamipo@gmail.com> | 2017-11-06 05:52:52 +0900 |
commit | e617fb57f5a388d5f0a47fd5e576588dd10066b0 (patch) | |
tree | 4225fe0bfa8bb3680852c624d42f0bcca522a831 /activerecord/test/cases | |
parent | 8a2ee3d8c6921ce34e597658e3f2b43b41423d1d (diff) | |
download | rails-e617fb57f5a388d5f0a47fd5e576588dd10066b0.tar.gz rails-e617fb57f5a388d5f0a47fd5e576588dd10066b0.tar.bz2 rails-e617fb57f5a388d5f0a47fd5e576588dd10066b0.zip |
Fix preloading polymorphic association when through association has already loaded
If through association has already loaded, `source_type` is ignored to
loaded through records. The loaded records should be filtered by
`source_type` in that case.
Fixes #30904.
Diffstat (limited to 'activerecord/test/cases')
-rw-r--r-- | activerecord/test/cases/associations/nested_through_associations_test.rb | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/activerecord/test/cases/associations/nested_through_associations_test.rb b/activerecord/test/cases/associations/nested_through_associations_test.rb index 4cf5a9ffc4..11ee45917f 100644 --- a/activerecord/test/cases/associations/nested_through_associations_test.rb +++ b/activerecord/test/cases/associations/nested_through_associations_test.rb @@ -579,6 +579,17 @@ class NestedThroughAssociationsTest < ActiveRecord::TestCase assert !c.post_taggings.empty? end + def test_polymorphic_has_many_through_when_through_association_has_already_loaded + cake_designer = CakeDesigner.create!(chef: Chef.new) + drink_designer = DrinkDesigner.create!(chef: Chef.new) + department = Department.create!(chefs: [cake_designer.chef, drink_designer.chef]) + Hotel.create!(departments: [department]) + hotel = Hotel.includes(:chefs, :cake_designers, :drink_designers).take + + assert_equal [cake_designer], hotel.cake_designers + assert_equal [drink_designer], hotel.drink_designers + end + def test_polymorphic_has_many_through_joined_different_table_twice cake_designer = CakeDesigner.create!(chef: Chef.new) drink_designer = DrinkDesigner.create!(chef: Chef.new) |