aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record/relation.rb
diff options
context:
space:
mode:
authorTed Johansson <drenmi@gmail.com>2015-10-15 17:00:28 +0800
committerTed Johansson <drenmi@gmail.com>2015-10-15 17:00:28 +0800
commitb901a49473817339e892f6c237a365a361b0b2d7 (patch)
tree4348dfc3a81f4843219259e6326b510ad0bd8f71 /activerecord/lib/active_record/relation.rb
parentb6cf69ebcbf7372c61d38aa33baa7d0f4224679b (diff)
downloadrails-b901a49473817339e892f6c237a365a361b0b2d7.tar.gz
rails-b901a49473817339e892f6c237a365a361b0b2d7.tar.bz2
rails-b901a49473817339e892f6c237a365a361b0b2d7.zip
Add deprecation warning to `ActiveRecord::Relation#update`
When passing an instance of `ActiveRecord::Base` to `#update`, it would internally call `#find`, resulting in a misleading deprecation warning. This change gives this deprecated use of `#update` its own, meaningful warning.
Diffstat (limited to 'activerecord/lib/active_record/relation.rb')
-rw-r--r--activerecord/lib/active_record/relation.rb7
1 files changed, 7 insertions, 0 deletions
diff --git a/activerecord/lib/active_record/relation.rb b/activerecord/lib/active_record/relation.rb
index 05bf87ab9d..392b462aa9 100644
--- a/activerecord/lib/active_record/relation.rb
+++ b/activerecord/lib/active_record/relation.rb
@@ -417,6 +417,13 @@ module ActiveRecord
elsif id == :all
to_a.each { |record| record.update(attributes) }
else
+ if ActiveRecord::Base === id
+ id = id.id
+ ActiveSupport::Deprecation.warn(<<-MSG.squish)
+ You are passing an instance of ActiveRecord::Base to `update`.
+ Please pass the id of the object by calling `.id`
+ MSG
+ end
object = find(id)
object.update(attributes)
object