class method
self.sanitize_sql_hash_for_conditions
Ruby on Rails 3.0.20
Since v2.2.3 Last seen in v3.1.12Signature
self.sanitize_sql_hash_for_conditions(attrs, default_table_name = self.table_name)
Sanitizes a hash of attribute/value pairs into SQL conditions for a WHERE clause.
{ :name => "foo'bar", :group_id => 4 }
# => "name='foo''bar' and group_id= 4"
{ :status => nil, :group_id => [1,2,3] }
# => "status IS NULL and group_id IN (1,2,3)"
{ :age => 13..18 }
# => "age BETWEEN 13 AND 18"
{ 'other_records.id' => 7 }
# => "`other_records`.`id` = 7"
{ :other_records => { :id => 7 } }
# => "`other_records`.`id` = 7"
And for value objects on a composed_of relationship:
{ :address => Address.new("123 abc st.", "chicago") }
# => "address_street='123 abc st.' and address_city='chicago'"
Parameters
-
attrsreq -
default_table_nameopt = self.table_name
Source
# File activerecord/lib/active_record/base.rb, line 1301
def sanitize_sql_hash_for_conditions(attrs, default_table_name = self.table_name)
attrs = expand_hash_conditions_for_aggregates(attrs)
table = Arel::Table.new(self.table_name, :engine => arel_engine, :as => default_table_name)
builder = PredicateBuilder.new(arel_engine)
builder.build_from_hash(attrs, table).map{ |b| b.to_sql }.join(' AND ')
end
Defined in activerecord/lib/active_record/base.rb line 1301
· View on GitHub
· Improve this page
· Find usages on GitHub
Defined in ActiveRecord::Base