aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record/relation
diff options
context:
space:
mode:
authorChris Geihsler <chris@geihsler.net>2012-09-29 18:32:56 -0400
committerChris Geihsler <cgeihsler@thinkthroughmath.com>2013-04-03 18:41:12 -0400
commit453c7d6c47be01c9938af14962279e4cb2d6e506 (patch)
tree8acdefb677b3edab11136ca2113dea98e0d839c4 /activerecord/lib/active_record/relation
parent488699166c3558963fa82d4689a35f8c3fd93f47 (diff)
downloadrails-453c7d6c47be01c9938af14962279e4cb2d6e506.tar.gz
rails-453c7d6c47be01c9938af14962279e4cb2d6e506.tar.bz2
rails-453c7d6c47be01c9938af14962279e4cb2d6e506.zip
Chained scopes will be preloaded properly. Fixes #7490
Diffstat (limited to 'activerecord/lib/active_record/relation')
-rw-r--r--activerecord/lib/active_record/relation/spawn_methods.rb9
1 files changed, 7 insertions, 2 deletions
diff --git a/activerecord/lib/active_record/relation/spawn_methods.rb b/activerecord/lib/active_record/relation/spawn_methods.rb
index c25570d758..b8e384c2f3 100644
--- a/activerecord/lib/active_record/relation/spawn_methods.rb
+++ b/activerecord/lib/active_record/relation/spawn_methods.rb
@@ -17,14 +17,14 @@ module ActiveRecord
if method == :includes
merged_relation = merged_relation.includes(value)
else
- merged_relation.send(:"#{method}_values=", value)
+ merge_relation_method(merged_relation, method, value)
end
end
end
(Relation::MULTI_VALUE_METHODS - [:joins, :where, :order]).each do |method|
value = r.send(:"#{method}_values")
- merged_relation.send(:"#{method}_values=", merged_relation.send(:"#{method}_values") + value) if value.present?
+ merge_relation_method(merged_relation, method, value) if value.present?
end
merged_relation.joins_values += r.joins_values
@@ -144,5 +144,10 @@ module ActiveRecord
relation
end
+ private
+
+ def merge_relation_method(relation, method, value)
+ relation.send(:"#{method}_values=", relation.send(:"#{method}_values") + value)
+ end
end
end