Method: ActiveRecord::PredicateBuilder.expand

Defined in:
lib/active_record/relation/predicate_builder.rb

.expand(klass, table, column, value) ⇒ Object



35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# File 'lib/active_record/relation/predicate_builder.rb', line 35

def self.expand(klass, table, column, value)
  queries = []

  # Find the foreign key when using queries such as:
  # Post.where(author: author)
  #
  # For polymorphic relationships, find the foreign key and type:
  # PriceEstimate.where(estimate_of: treasure)
  if klass && value.class < Base && reflection = klass.reflect_on_association(column.to_sym)
    if reflection.polymorphic?
      queries << build(table[reflection.foreign_type], value.class.base_class)
    end

    column = reflection.foreign_key
  end

  queries << build(table[column], value)
  queries
end