diff options
4 files changed, 8 insertions, 6 deletions
| diff --git a/activerecord/lib/active_record/associations/join_dependency.rb b/activerecord/lib/active_record/associations/join_dependency.rb index fb5c7ff374..bc235cf63d 100644 --- a/activerecord/lib/active_record/associations/join_dependency.rb +++ b/activerecord/lib/active_record/associations/join_dependency.rb @@ -79,10 +79,10 @@ module ActiveRecord          join_root.drop(1).map!(&:reflection)        end -      def join_relation(relation) +      def outer_joins          nodes = join_root.drop 1          nodes.each { |n| n.join_type = Arel::OuterJoin } -        relation.joins(nodes) +        nodes        end        def join_constraints diff --git a/activerecord/lib/active_record/relation/finder_methods.rb b/activerecord/lib/active_record/relation/finder_methods.rb index 0132a02f83..d5eb1edf77 100644 --- a/activerecord/lib/active_record/relation/finder_methods.rb +++ b/activerecord/lib/active_record/relation/finder_methods.rb @@ -267,7 +267,7 @@ module ActiveRecord      def apply_join_dependency(relation, join_dependency)        relation = relation.except(:includes, :eager_load, :preload) -      relation = join_dependency.join_relation(relation) +      relation = relation.joins join_dependency        if using_limitable_reflections?(join_dependency.reflections)          relation diff --git a/activerecord/lib/active_record/relation/merger.rb b/activerecord/lib/active_record/relation/merger.rb index c05632e688..182b9ed89c 100644 --- a/activerecord/lib/active_record/relation/merger.rb +++ b/activerecord/lib/active_record/relation/merger.rb @@ -94,7 +94,7 @@ module ActiveRecord                                                                             [])            relation.joins! rest -          @relation = join_dependency.join_relation(relation) +          @relation = relation.joins join_dependency          end        end diff --git a/activerecord/lib/active_record/relation/query_methods.rb b/activerecord/lib/active_record/relation/query_methods.rb index 776360fc55..364c7ec418 100644 --- a/activerecord/lib/active_record/relation/query_methods.rb +++ b/activerecord/lib/active_record/relation/query_methods.rb @@ -928,7 +928,7 @@ module ActiveRecord            :string_join          when Hash, Symbol, Array            :association_join -        when ActiveRecord::Associations::JoinDependency::JoinAssociation +        when ActiveRecord::Associations::JoinDependency            :stashed_join          when Arel::Nodes::Join            :join_node @@ -950,7 +950,9 @@ module ActiveRecord          join_list        ) -      join_dependency.graft(stashed_association_joins) +      stashed_association_joins.each do |dep| +        join_dependency.graft dep.outer_joins +      end        joins = join_dependency.join_constraints | 
