method
call
v5.0.0.1 -
Show latest stable
- Class:
ActiveRecord::PredicateBuilder::PolymorphicArrayHandler
call(attribute, value)public
No documentation available.
# File activerecord/lib/active_record/relation/predicate_builder/polymorphic_array_handler.rb, line 8
def call(attribute, value)
table = value.associated_table
queries = value.type_to_ids_mapping.map do |type, ids|
{ table.association_foreign_type.to_s => type, table.association_foreign_key.to_s => ids }
end
predicates = queries.map { |query| predicate_builder.build_from_hash(query) }
if predicates.size > 1
type_and_ids_predicates = predicates.map { |type_predicate, id_predicate| Arel::Nodes::Grouping.new(type_predicate.and(id_predicate)) }
type_and_ids_predicates.inject(&:or)
else
predicates.first
end
end