aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record/relation
diff options
context:
space:
mode:
authorRyuta Kamizono <kamipo@gmail.com>2017-05-06 06:02:01 +0900
committerRyuta Kamizono <kamipo@gmail.com>2017-06-29 23:09:05 +0900
commitd9fca84d218f0ed784c7bf6470df42d41838e507 (patch)
treeedb7f0595cb56f93adc833bc4dae69b7d586df9b /activerecord/lib/active_record/relation
parent4448873c8755524ccadd639d1a08df53496c36d7 (diff)
downloadrails-d9fca84d218f0ed784c7bf6470df42d41838e507.tar.gz
rails-d9fca84d218f0ed784c7bf6470df42d41838e507.tar.bz2
rails-d9fca84d218f0ed784c7bf6470df42d41838e507.zip
Deprecate delegating to `arel` in `Relation`
Active Record doesn't rely delegating to `arel` in the internal since 425f2ca. The delegation is a lower priority than delegating to `klass`, so it is pretty unclear which method is delegated to `arel`. For example, `bind_values` method was removed at b06f64c (a series of changes https://github.com/rails/rails/compare/79f71d3...b06f64c). But a relation still could respond to the method because `arel` also have the same named method (#28976). Removing the delegation will achieve predictable behavior.
Diffstat (limited to 'activerecord/lib/active_record/relation')
-rw-r--r--activerecord/lib/active_record/relation/delegation.rb2
1 files changed, 2 insertions, 0 deletions
diff --git a/activerecord/lib/active_record/relation/delegation.rb b/activerecord/lib/active_record/relation/delegation.rb
index 0e88ef4c7e..48c4dcdef4 100644
--- a/activerecord/lib/active_record/relation/delegation.rb
+++ b/activerecord/lib/active_record/relation/delegation.rb
@@ -89,6 +89,8 @@ module ActiveRecord
self.class.delegate_to_scoped_klass(method)
scoping { @klass.public_send(method, *args, &block) }
elsif arel.respond_to?(method)
+ ActiveSupport::Deprecation.warn \
+ "Delegating #{method} to arel is deprecated and will be removed in Rails 6.0."
self.class.delegate method, to: :arel
arel.public_send(method, *args, &block)
else