aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord
diff options
context:
space:
mode:
authorPratik Naik <pratiknaik@gmail.com>2010-01-18 12:55:23 +0530
committerPratik Naik <pratiknaik@gmail.com>2010-01-18 18:56:55 +0530
commit2a2bc8e84aa619089abcc4f9a4c2711a118e5fa9 (patch)
tree3ef933712b031887693528ae0657f2bf1448d56d /activerecord
parent8bb527464845071ee72bcbcddcf860d4af1eda32 (diff)
downloadrails-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.rb3
-rw-r--r--activerecord/test/cases/relations_test.rb5
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?