From d92ae6ccca3bcfd73546d612efaea011270bd270 Mon Sep 17 00:00:00 2001
From: Aaron Patterson <aaron.patterson@gmail.com>
Date: Thu, 13 Mar 2014 11:40:35 -0700
Subject: passing an ActiveRecord object to `exists?` is deprecated.

Pass the id of the object to the method by calling `.id` on the AR
object.
---
 .../lib/active_record/associations/collection_association.rb     | 2 +-
 activerecord/lib/active_record/relation/finder_methods.rb        | 9 ++++++++-
 2 files changed, 9 insertions(+), 2 deletions(-)

(limited to 'activerecord/lib')

diff --git a/activerecord/lib/active_record/associations/collection_association.rb b/activerecord/lib/active_record/associations/collection_association.rb
index 9a2900843e..ff0fbe932b 100644
--- a/activerecord/lib/active_record/associations/collection_association.rb
+++ b/activerecord/lib/active_record/associations/collection_association.rb
@@ -370,7 +370,7 @@ module ActiveRecord
           if record.new_record?
             include_in_memory?(record)
           else
-            loaded? ? target.include?(record) : scope.exists?(record)
+            loaded? ? target.include?(record) : scope.exists?(record.id)
           end
         else
           false
diff --git a/activerecord/lib/active_record/relation/finder_methods.rb b/activerecord/lib/active_record/relation/finder_methods.rb
index 1ba7fc47c0..180bc64e3a 100644
--- a/activerecord/lib/active_record/relation/finder_methods.rb
+++ b/activerecord/lib/active_record/relation/finder_methods.rb
@@ -1,3 +1,5 @@
+require 'active_support/deprecation'
+
 module ActiveRecord
   module FinderMethods
     ONE_AS_ONE = '1 AS one'
@@ -280,7 +282,12 @@ module ActiveRecord
     #   Person.exists?(false)
     #   Person.exists?
     def exists?(conditions = :none)
-      conditions = conditions.id if Base === conditions
+      if Base === conditions
+        conditions = conditions.id
+        ActiveSupport::Deprecation.warn "You are passing an instance of ActiveRecord::Base to `exists?`." \
+          "Please pass the id of the object by calling `.id`"
+      end
+
       return false if !conditions
 
       relation = apply_join_dependency(self, construct_join_dependency)
-- 
cgit v1.2.3


From d35f0033c7dec2b8d8b52058fb8db495d49596f7 Mon Sep 17 00:00:00 2001
From: Aaron Patterson <aaron.patterson@gmail.com>
Date: Thu, 13 Mar 2014 11:47:12 -0700
Subject: passing an instance of an AR object to `find` is deprecated

please pass the id of the AR object by calling `.id` on the model first.
---
 activerecord/lib/active_record/relation/finder_methods.rb | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

(limited to 'activerecord/lib')

diff --git a/activerecord/lib/active_record/relation/finder_methods.rb b/activerecord/lib/active_record/relation/finder_methods.rb
index 180bc64e3a..c2b9dc08fe 100644
--- a/activerecord/lib/active_record/relation/finder_methods.rb
+++ b/activerecord/lib/active_record/relation/finder_methods.rb
@@ -421,7 +421,11 @@ module ActiveRecord
     end
 
     def find_one(id)
-      id = id.id if ActiveRecord::Base === id
+      if ActiveRecord::Base === id
+        id = id.id
+        ActiveSupport::Deprecation.warn "You are passing an instance of ActiveRecord::Base to `find`." \
+          "Please pass the id of the object by calling `.id`"
+      end
 
       column = columns_hash[primary_key]
       substitute = connection.substitute_at(column, bind_values.length)
-- 
cgit v1.2.3