aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJosé Valim <jose.valim@plataformatec.com.br>2013-12-29 12:25:21 -0800
committerJosé Valim <jose.valim@plataformatec.com.br>2013-12-29 12:25:21 -0800
commit524ad8f572264627158a776eb55df2be74e593e4 (patch)
tree8f8aa3a2cf26a1a993f7e2dc66203554c78bedba
parent436ed5171199ae1764ce413044dad8d1556b7791 (diff)
parenta2985e206709f7947ef427a527d72ff89824931a (diff)
downloadrails-524ad8f572264627158a776eb55df2be74e593e4.tar.gz
rails-524ad8f572264627158a776eb55df2be74e593e4.tar.bz2
rails-524ad8f572264627158a776eb55df2be74e593e4.zip
Merge pull request #13534 from kuldeepaggarwal/f-where-not
raise ArgumentError for nil in .where.not
-rw-r--r--activerecord/lib/active_record/relation/query_methods.rb2
-rw-r--r--activerecord/test/cases/relation/where_chain_test.rb6
2 files changed, 8 insertions, 0 deletions
diff --git a/activerecord/lib/active_record/relation/query_methods.rb b/activerecord/lib/active_record/relation/query_methods.rb
index 3d0709266a..78da6a83ec 100644
--- a/activerecord/lib/active_record/relation/query_methods.rb
+++ b/activerecord/lib/active_record/relation/query_methods.rb
@@ -37,6 +37,8 @@ module ActiveRecord
def not(opts, *rest)
where_value = @scope.send(:build_where, opts, rest).map do |rel|
case rel
+ when NilClass
+ raise ArgumentError, 'Invalid argument for .where.not(), got nil.'
when Arel::Nodes::In
Arel::Nodes::NotIn.new(rel.left, rel.right)
when Arel::Nodes::Equality
diff --git a/activerecord/test/cases/relation/where_chain_test.rb b/activerecord/test/cases/relation/where_chain_test.rb
index d44b4dfe3d..fd2420cb88 100644
--- a/activerecord/test/cases/relation/where_chain_test.rb
+++ b/activerecord/test/cases/relation/where_chain_test.rb
@@ -23,6 +23,12 @@ module ActiveRecord
assert_equal([expected], relation.where_values)
end
+ def test_not_with_nil
+ assert_raise ArgumentError do
+ Post.where.not(nil)
+ end
+ end
+
def test_not_in
expected = Arel::Nodes::NotIn.new(Post.arel_table[@name], %w[hello goodbye])
relation = Post.where.not(title: %w[hello goodbye])