where(foo: [1, nil]) becomes "WHERE foo = 1 OR foo IS NULL"

was "WHERE foo IN (1) OR foo IS NULL" before
This commit is contained in:
Akira Matsuda 2011-12-28 14:27:38 +09:00
parent c8711e4ecd
commit 1877cf9b2a

@ -29,8 +29,11 @@ def self.build_from_hash(engine, attributes, default_table)
if values.include?(nil) if values.include?(nil)
values = values.compact values = values.compact
if values.empty? case values.length
when 0
array_predicates << attribute.eq(nil) array_predicates << attribute.eq(nil)
when 1
array_predicates << attribute.eq(values.first).or(attribute.eq(nil))
else else
array_predicates << attribute.in(values).or(attribute.eq(nil)) array_predicates << attribute.in(values).or(attribute.eq(nil))
end end