aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record
diff options
context:
space:
mode:
authorRafael Mendonça França <rafaelmfranca@gmail.com>2013-10-27 13:05:19 -0700
committerRafael Mendonça França <rafaelmfranca@gmail.com>2013-10-27 13:05:19 -0700
commite17979e4f7cbf917d59a7cc515b77566e31afff6 (patch)
treea27ec11cec3fdb43a7e1bd042dfd304dde9fb3e6 /activerecord/lib/active_record
parent16d81af5292c8f5f01cb38c862123fa01b995f3f (diff)
parent6b71a1416cb1457517b27cd0a55cb32df0cdf0c3 (diff)
downloadrails-e17979e4f7cbf917d59a7cc515b77566e31afff6.tar.gz
rails-e17979e4f7cbf917d59a7cc515b77566e31afff6.tar.bz2
rails-e17979e4f7cbf917d59a7cc515b77566e31afff6.zip
Merge pull request #12664 from jetthoughts/12242_includes_in_through_association
Skip `include_values` from through associations chains for building association scope
Diffstat (limited to 'activerecord/lib/active_record')
-rw-r--r--activerecord/lib/active_record/associations/association_scope.rb8
1 files changed, 6 insertions, 2 deletions
diff --git a/activerecord/lib/active_record/associations/association_scope.rb b/activerecord/lib/active_record/associations/association_scope.rb
index d862a5f29d..17f056e764 100644
--- a/activerecord/lib/active_record/associations/association_scope.rb
+++ b/activerecord/lib/active_record/associations/association_scope.rb
@@ -78,7 +78,8 @@ module ActiveRecord
scope = scope.joins(join(foreign_table, constraint))
end
- klass = i == 0 ? self.klass : reflection.klass
+ is_first_chain = i == 0
+ klass = is_first_chain ? self.klass : reflection.klass
# Exclude the scope of the association itself, because that
# was already merged in the #scope method.
@@ -89,7 +90,10 @@ module ActiveRecord
scope.merge! item.except(:where, :includes, :bind)
end
- scope.includes! item.includes_values
+ if is_first_chain
+ scope.includes! item.includes_values
+ end
+
scope.where_values += item.where_values
scope.order_values |= item.order_values
end