aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord
diff options
context:
space:
mode:
authorAndrew White <andyw@pixeltrix.co.uk>2012-05-10 23:16:40 +0100
committerAndrew White <andyw@pixeltrix.co.uk>2012-05-10 23:22:54 +0100
commit62f098dddf55a36e15c94a60b29c3c280b219cce (patch)
treeea1d41ea28d9201b3a36c52c8fa7efcec27e3465 /activerecord
parent66e338aa98d8ccdbeb9ca261886edd1d0c9747b6 (diff)
downloadrails-62f098dddf55a36e15c94a60b29c3c280b219cce.tar.gz
rails-62f098dddf55a36e15c94a60b29c3c280b219cce.tar.bz2
rails-62f098dddf55a36e15c94a60b29c3c280b219cce.zip
Return false for exists? with new records - fixes #6199.
(cherry picked from commit fa21b73ebb8339ad388f149c817c433b6254d490)
Diffstat (limited to 'activerecord')
-rw-r--r--activerecord/lib/active_record/relation/finder_methods.rb3
-rw-r--r--activerecord/test/cases/finder_test.rb1
-rw-r--r--activerecord/test/cases/relations_test.rb1
3 files changed, 3 insertions, 2 deletions
diff --git a/activerecord/lib/active_record/relation/finder_methods.rb b/activerecord/lib/active_record/relation/finder_methods.rb
index 9a34927857..4737a194f0 100644
--- a/activerecord/lib/active_record/relation/finder_methods.rb
+++ b/activerecord/lib/active_record/relation/finder_methods.rb
@@ -185,9 +185,8 @@ module ActiveRecord
# Person.exists?(['name LIKE ?', "%#{query}%"])
# Person.exists?
def exists?(id = false)
- return false if id.nil?
-
id = id.id if ActiveRecord::Base === id
+ return false if id.nil?
join_dependency = construct_join_dependency_for_association_find
relation = construct_relation_for_association_find(join_dependency)
diff --git a/activerecord/test/cases/finder_test.rb b/activerecord/test/cases/finder_test.rb
index c72a9dcb17..9bf9fe7d82 100644
--- a/activerecord/test/cases/finder_test.rb
+++ b/activerecord/test/cases/finder_test.rb
@@ -32,6 +32,7 @@ class FinderTest < ActiveRecord::TestCase
assert Topic.exists?(:author_name => "Mary", :approved => true)
assert Topic.exists?(["parent_id = ?", 1])
assert !Topic.exists?(45)
+ assert !Topic.exists?(Topic.new)
begin
assert !Topic.exists?("foo")
diff --git a/activerecord/test/cases/relations_test.rb b/activerecord/test/cases/relations_test.rb
index fc39e67e3d..7639585649 100644
--- a/activerecord/test/cases/relations_test.rb
+++ b/activerecord/test/cases/relations_test.rb
@@ -599,6 +599,7 @@ class RelationTest < ActiveRecord::TestCase
assert ! davids.exists?(authors(:mary).id)
assert ! davids.exists?("42")
assert ! davids.exists?(42)
+ assert ! davids.exists?(davids.new)
fake = Author.where(:name => 'fake author')
assert ! fake.exists?