diff options
author | Akira Matsuda <ronnie@dio.jp> | 2011-12-28 14:27:38 +0900 |
---|---|---|
committer | Akira Matsuda <ronnie@dio.jp> | 2011-12-28 15:32:56 +0900 |
commit | 1877cf9b2a3e21bb77f33b28f9c42cc1071872a0 (patch) | |
tree | 567ddd5a3689dd71615374eaf4c4e997594882cd /activerecord | |
parent | c8711e4ecd1531db15b6f2d0dbf01fed44904667 (diff) | |
download | rails-1877cf9b2a3e21bb77f33b28f9c42cc1071872a0.tar.gz rails-1877cf9b2a3e21bb77f33b28f9c42cc1071872a0.tar.bz2 rails-1877cf9b2a3e21bb77f33b28f9c42cc1071872a0.zip |
where(foo: [1, nil]) becomes "WHERE foo = 1 OR foo IS NULL"
was "WHERE foo IN (1) OR foo IS NULL" before
Diffstat (limited to 'activerecord')
-rw-r--r-- | activerecord/lib/active_record/relation/predicate_builder.rb | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/activerecord/lib/active_record/relation/predicate_builder.rb b/activerecord/lib/active_record/relation/predicate_builder.rb index a436f3269e..95b6efb402 100644 --- a/activerecord/lib/active_record/relation/predicate_builder.rb +++ b/activerecord/lib/active_record/relation/predicate_builder.rb @@ -29,8 +29,11 @@ module ActiveRecord if values.include?(nil) values = values.compact - if values.empty? + case values.length + when 0 array_predicates << attribute.eq(nil) + when 1 + array_predicates << attribute.eq(values.first).or(attribute.eq(nil)) else array_predicates << attribute.in(values).or(attribute.eq(nil)) end |