diff options
author | Ryuta Kamizono <kamipo@gmail.com> | 2017-04-09 16:59:26 +0900 |
---|---|---|
committer | Ryuta Kamizono <kamipo@gmail.com> | 2017-04-09 16:59:26 +0900 |
commit | cc0b566a614f6172bd579f9f3ed5648e22ecd633 (patch) | |
tree | 5e9bdc5880d3ef9e3d7be74d874a15d3dc7b1f95 /activerecord/lib/active_record/relation/predicate_builder/association_query_handler.rb | |
parent | 7b78cf99986cf06c5fbcabf5586bdd6ed322edf2 (diff) | |
download | rails-cc0b566a614f6172bd579f9f3ed5648e22ecd633.tar.gz rails-cc0b566a614f6172bd579f9f3ed5648e22ecd633.tar.bz2 rails-cc0b566a614f6172bd579f9f3ed5648e22ecd633.zip |
Expose `queries` for `AssociationQueryValue` and `PolymorphicArrayValue`
Diffstat (limited to 'activerecord/lib/active_record/relation/predicate_builder/association_query_handler.rb')
-rw-r--r-- | activerecord/lib/active_record/relation/predicate_builder/association_query_handler.rb | 25 |
1 files changed, 13 insertions, 12 deletions
diff --git a/activerecord/lib/active_record/relation/predicate_builder/association_query_handler.rb b/activerecord/lib/active_record/relation/predicate_builder/association_query_handler.rb index 82da4689f0..9141d9c537 100644 --- a/activerecord/lib/active_record/relation/predicate_builder/association_query_handler.rb +++ b/activerecord/lib/active_record/relation/predicate_builder/association_query_handler.rb @@ -20,9 +20,7 @@ module ActiveRecord end def call(attribute, value) - table = value.associated_table - queries = { table.association_foreign_key.to_s => value.ids } - predicate_builder.build_from_hash(queries) + predicate_builder.build_from_hash(value.queries) end # TODO Change this to private once we've dropped Ruby 2.2 support. @@ -40,18 +38,21 @@ module ActiveRecord @value = value end - def ids - case value - when Relation - value.select(primary_key) - when Array - value.map { |v| convert_to_id(v) } - else - convert_to_id(value) - end + def queries + { associated_table.association_foreign_key.to_s => ids } end private + def ids + case value + when Relation + value.select_values.empty? ? value.select(primary_key) : value + when Array + value.map { |v| convert_to_id(v) } + else + convert_to_id(value) + end + end def primary_key associated_table.association_primary_key |