fix exists? to return false if passed nil (which may come from a missing URL param)

This commit is contained in:
Andrew Kaspick
2011-08-10 12:55:29 -05:00
parent bb4f687bc6
commit d48dd18bb2
2 changed files with 12 additions and 1 deletions

View File

@@ -180,7 +180,9 @@ module ActiveRecord
# 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 File

@@ -48,6 +48,15 @@ class FinderTest < ActiveRecord::TestCase
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?