Class: ActiveRecord::Relation::WhereClause

Inherits:
Object
  • Object
show all
Defined in:
lib/composite_primary_keys/relation/where_clause.rb

Instance Method Summary collapse

Instance Method Details

#to_h(table_name = nil) ⇒ Object



4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# File 'lib/composite_primary_keys/relation/where_clause.rb', line 4

def to_h(table_name = nil)
  equalities = equalities(predicates)

  # CPK Adds this line, because ours are coming in with AND->{EQUALITY, EQUALITY}
  equalities = predicates.grep(Arel::Nodes::And).map(&:children).flatten.grep(Arel::Nodes::Equality) if equalities.empty?

  if table_name
    equalities = equalities.select do |node|
      node.left.relation.name == table_name
    end
  end

  equalities.map { |node|
    name = node.left.name.to_s
    value = extract_node_value(node.right)
    [name, value]
  }.to_h
end