module Polyamorous::JoinDependencyExtensions

def join_constraints(outer_joins, join_type)


passing an additional argument, `join_type`, to #join_constraints.
left_outer_joins (see #make_polyamorous_left_outer_joins below) and added
https://github.com/rails/rails/commit/e038975 which added
This internal method was changed in Rails 5.0 by commit

Replaces ActiveRecord::Associations::JoinDependency#join_constraints
def join_constraints(outer_joins, join_type)
  joins = join_root.children.flat_map { |child|
    if join_type == Arel::Nodes::OuterJoin
      make_polyamorous_left_outer_joins join_root, child
    else
      make_polyamorous_inner_joins join_root, child
    end
  }
  joins.concat outer_joins.flat_map { |oj|
    if join_root.match? oj.join_root
      walk(join_root, oj.join_root)
    else
      oj.join_root.children.flat_map { |child|
        make_outer_joins(oj.join_root, child)
      }
    end
  }
end