From 159b21b59dba120e58eeb8bff89b9d322e720c44 Mon Sep 17 00:00:00 2001 From: Ryuta Kamizono Date: Mon, 29 Jan 2018 08:34:33 +0900 Subject: Fix expanding an array of `composed_of` objects which have multiple mappings Follow up of #31724. If `composed_of` objects have multiple mappings, array predicate handler can not correctly handle the expanded condition. We need to handle it like polymorphic association objects. --- activerecord/test/cases/finder_test.rb | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'activerecord/test/cases') diff --git a/activerecord/test/cases/finder_test.rb b/activerecord/test/cases/finder_test.rb index fabfc4574c..b413212e26 100644 --- a/activerecord/test/cases/finder_test.rb +++ b/activerecord/test/cases/finder_test.rb @@ -868,13 +868,14 @@ class FinderTest < ActiveRecord::TestCase assert_equal customers(:david), found_customer end - def test_hash_condition_find_with_aggregate_having_three_mapping_array + def test_hash_condition_find_with_aggregate_having_three_mappings_array david_address = customers(:david).address zaphod_address = customers(:zaphod).address + barney_address = customers(:barney).address assert_kind_of Address, david_address assert_kind_of Address, zaphod_address - found_customers = Customer.where(address: [david_address, zaphod_address]) - assert_equal [customers(:david), customers(:zaphod)], found_customers + found_customers = Customer.where(address: [david_address, zaphod_address, barney_address]) + assert_equal [customers(:david), customers(:zaphod), customers(:barney)], found_customers.sort_by(&:id) end def test_hash_condition_find_with_aggregate_having_one_mapping_array @@ -883,7 +884,7 @@ class FinderTest < ActiveRecord::TestCase assert_kind_of Money, david_balance assert_kind_of Money, zaphod_balance found_customers = Customer.where(balance: [david_balance, zaphod_balance]) - assert_equal [customers(:david), customers(:zaphod)], found_customers + assert_equal [customers(:david), customers(:zaphod)], found_customers.sort_by(&:id) end def test_hash_condition_find_with_aggregate_attribute_having_same_name_as_field_and_key_value_being_aggregate -- cgit v1.2.3