aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record/associations/preloader
diff options
context:
space:
mode:
Diffstat (limited to 'activerecord/lib/active_record/associations/preloader')
-rw-r--r--activerecord/lib/active_record/associations/preloader/through_association.rb8
1 files changed, 7 insertions, 1 deletions
diff --git a/activerecord/lib/active_record/associations/preloader/through_association.rb b/activerecord/lib/active_record/associations/preloader/through_association.rb
index 5bd49b041a..b16fca7dc9 100644
--- a/activerecord/lib/active_record/associations/preloader/through_association.rb
+++ b/activerecord/lib/active_record/associations/preloader/through_association.rb
@@ -40,7 +40,11 @@ module ActiveRecord
middle_records = through_records.flat_map(&:last)
- reflection_scope = reflection_scope() if reflection.scope
+ if preload_scope
+ reflection_scope = reflection_scope().merge(preload_scope)
+ elsif reflection.scope
+ reflection_scope = reflection_scope()
+ end
preloaders = preloader.preload(middle_records,
source_reflection.name,
@@ -70,6 +74,8 @@ module ActiveRecord
rhs_records
end
end
+ end.tap do
+ reset_association(middle_records, source_reflection.name, preload_scope)
end
end