Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

fix exists? to return false if passed nil (which may come from a miss…

…ing URL param)
  • Loading branch information...
commit d48dd18bb2a3d0c46708a9ee217909783b997cb2 1 parent bb4f687
@akaspick akaspick authored
View
4 activerecord/lib/active_record/relation/finder_methods.rb
@@ -180,7 +180,9 @@ def all(*args)
# Person.exists?(:name => "David")
# Person.exists?(['name LIKE ?', "%#{query}%"])
# Person.exists?
- def exists?(id = nil)
+ def exists?(id = false)
+ return false if id.nil?
+
id = id.id if ActiveRecord::Base === id
join_dependency = construct_join_dependency_for_association_find
View
9 activerecord/test/cases/finder_test.rb
@@ -48,6 +48,15 @@ def test_exists_returns_true_with_one_record_and_no_args
assert Topic.exists?
end
+ # exists? should handle nil for id's that come from URLs and always return false
+ # (example: Topic.exists?(params[:id])) where params[:id] is nil
+ def test_exists_with_nil_arg
+ assert !Topic.exists?(nil)
+ assert Topic.exists?
+ assert !Topic.first.replies.exists?(nil)
+ assert Topic.first.replies.exists?
+ end
+
def test_does_not_exist_with_empty_table_and_no_args_given
Topic.delete_all
assert !Topic.exists?
Please sign in to comment.
Something went wrong with that request. Please try again.