Object
# File lib/active_record/relation/predicate_builder.rb, line 8
8: def build_from_hash(attributes, default_table)
9: predicates = attributes.map do |column, value|
10: table = default_table
11:
12: if value.is_a?(Hash)
13: table = Arel::Table.new(column, :engine => @engine)
14: build_from_hash(value, table)
15: else
16: column = column.to_s
17:
18: if column.include?('.')
19: table_name, column = column.split('.', 2)
20: table = Arel::Table.new(table_name, :engine => @engine)
21: end
22:
23: attribute = table[column] || Arel::Attribute.new(table, column)
24:
25: case value
26: when Array, ActiveRecord::Associations::AssociationCollection, ActiveRecord::Relation
27: values = value.to_a
28: attribute.in(values)
29: when Range, Arel::Relation
30: attribute.in(value)
31: else
32: attribute.eq(value)
33: end
34: end
35: end
36:
37: predicates.flatten
38: end
Disabled; run with --debug to generate this.
Generated with the Darkfish Rdoc Generator 1.1.6.