diff options
author | Pratik Naik <pratiknaik@gmail.com> | 2010-01-18 12:55:23 +0530 |
---|---|---|
committer | Pratik Naik <pratiknaik@gmail.com> | 2010-01-18 18:56:55 +0530 |
commit | 2a2bc8e84aa619089abcc4f9a4c2711a118e5fa9 (patch) | |
tree | 3ef933712b031887693528ae0657f2bf1448d56d /activerecord | |
parent | 8bb527464845071ee72bcbcddcf860d4af1eda32 (diff) | |
download | rails-2a2bc8e84aa619089abcc4f9a4c2711a118e5fa9.tar.gz rails-2a2bc8e84aa619089abcc4f9a4c2711a118e5fa9.tar.bz2 rails-2a2bc8e84aa619089abcc4f9a4c2711a118e5fa9.zip |
Handle invalid query IN() generated when a blank array is supplied in hash conditions
Diffstat (limited to 'activerecord')
-rw-r--r-- | activerecord/lib/active_record/relation/predicate_builder.rb | 3 | ||||
-rw-r--r-- | activerecord/test/cases/relations_test.rb | 5 |
2 files changed, 7 insertions, 1 deletions
diff --git a/activerecord/lib/active_record/relation/predicate_builder.rb b/activerecord/lib/active_record/relation/predicate_builder.rb index 03f194c462..9e855209f9 100644 --- a/activerecord/lib/active_record/relation/predicate_builder.rb +++ b/activerecord/lib/active_record/relation/predicate_builder.rb @@ -24,7 +24,8 @@ module ActiveRecord case value when Array, ActiveRecord::Associations::AssociationCollection, ActiveRecord::NamedScope::Scope - attribute.in(value.to_a) + values = value.to_a + values.any? ? attribute.in(values) : attribute.eq(nil) when Range # TODO : Arel should handle ranges with excluded end. if value.exclude_end? diff --git a/activerecord/test/cases/relations_test.rb b/activerecord/test/cases/relations_test.rb index e31d0ee3e8..d34c9b4895 100644 --- a/activerecord/test/cases/relations_test.rb +++ b/activerecord/test/cases/relations_test.rb @@ -339,6 +339,11 @@ class RelationTest < ActiveRecord::TestCase assert_raises(ActiveRecord::RecordNotFound) { authors.find(['42', 43]) } end + def test_find_in_empty_array + authors = Author.scoped.where(:id => []) + assert authors.all.blank? + end + def test_exists davids = Author.where(:name => 'David') assert davids.exists? |