diff options
author | José Valim <jose.valim@plataformatec.com.br> | 2013-12-29 12:25:21 -0800 |
---|---|---|
committer | José Valim <jose.valim@plataformatec.com.br> | 2013-12-29 12:25:21 -0800 |
commit | 524ad8f572264627158a776eb55df2be74e593e4 (patch) | |
tree | 8f8aa3a2cf26a1a993f7e2dc66203554c78bedba | |
parent | 436ed5171199ae1764ce413044dad8d1556b7791 (diff) | |
parent | a2985e206709f7947ef427a527d72ff89824931a (diff) | |
download | rails-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.rb | 2 | ||||
-rw-r--r-- | activerecord/test/cases/relation/where_chain_test.rb | 6 |
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]) |