aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record/relation/query_methods.rb
diff options
context:
space:
mode:
authorYves Senn <yves.senn@gmail.com>2015-01-05 10:08:06 +0100
committerYves Senn <yves.senn@gmail.com>2015-01-05 10:08:56 +0100
commit3ae98181433dda1b5e19910e107494762512a86c (patch)
tree6c23a60344040edc6e55f02323dd3e7a33c4c44c /activerecord/lib/active_record/relation/query_methods.rb
parent65520c29f7e9fbd654446624a5c267bdc6285341 (diff)
downloadrails-3ae98181433dda1b5e19910e107494762512a86c.tar.gz
rails-3ae98181433dda1b5e19910e107494762512a86c.tar.bz2
rails-3ae98181433dda1b5e19910e107494762512a86c.zip
remove deprecation warning when modifying a Relation with cached arel.
This adresses https://github.com/rails/rails/commit/1b7aa62b184c4410c99208f71b59bbac5c5f03be#commitcomment-9147803
Diffstat (limited to 'activerecord/lib/active_record/relation/query_methods.rb')
-rw-r--r--activerecord/lib/active_record/relation/query_methods.rb35
1 files changed, 14 insertions, 21 deletions
diff --git a/activerecord/lib/active_record/relation/query_methods.rb b/activerecord/lib/active_record/relation/query_methods.rb
index ef380abfe8..6892cc114c 100644
--- a/activerecord/lib/active_record/relation/query_methods.rb
+++ b/activerecord/lib/active_record/relation/query_methods.rb
@@ -62,15 +62,14 @@ module ActiveRecord
Relation::MULTI_VALUE_METHODS.each do |name|
class_eval <<-CODE, __FILE__, __LINE__ + 1
- def #{name}_values # def select_values
- @values[:#{name}] || [] # @values[:select] || []
- end # end
- #
- def #{name}_values=(values) # def select_values=(values)
- raise ImmutableRelation if @loaded # raise ImmutableRelation if @loaded
- check_cached_relation
- @values[:#{name}] = values # @values[:select] = values
- end # end
+ def #{name}_values # def select_values
+ @values[:#{name}] || [] # @values[:select] || []
+ end # end
+ #
+ def #{name}_values=(values) # def select_values=(values)
+ assert_mutability! # assert_mutability!
+ @values[:#{name}] = values # @values[:select] = values
+ end # end
CODE
end
@@ -85,23 +84,12 @@ module ActiveRecord
Relation::SINGLE_VALUE_METHODS.each do |name|
class_eval <<-CODE, __FILE__, __LINE__ + 1
def #{name}_value=(value) # def readonly_value=(value)
- raise ImmutableRelation if @loaded # raise ImmutableRelation if @loaded
- check_cached_relation
+ assert_mutability! # assert_mutability!
@values[:#{name}] = value # @values[:readonly] = value
end # end
CODE
end
- def check_cached_relation # :nodoc:
- if defined?(@arel) && @arel
- @arel = nil
- ActiveSupport::Deprecation.warn(<<-MSG.squish)
- Modifying already cached Relation. The cache will be reset. Use a
- cloned Relation to prevent this warning.
- MSG
- end
- end
-
def create_with_value # :nodoc:
@values[:create_with] || {}
end
@@ -857,6 +845,11 @@ module ActiveRecord
private
+ def assert_mutability!
+ raise ImmutableRelation if @loaded
+ raise ImmutableRelation if defined?(@arel) && @arel
+ end
+
def build_arel
arel = Arel::SelectManager.new(table)