25 lines
761 B
Ruby
25 lines
761 B
Ruby
# active_record_4.2_ruby_2/join_dependency.rb
|
|
require 'polyamorous/activerecord_5.0_ruby_2/join_dependency'
|
|
|
|
module Polyamorous
|
|
module JoinDependencyExtensions
|
|
# Replaces ActiveRecord::Associations::JoinDependency#join_constraints
|
|
# to call #make_polyamorous_inner_joins instead of #make_inner_joins.
|
|
#
|
|
def join_constraints(outer_joins)
|
|
joins = join_root.children.flat_map { |child|
|
|
make_polyamorous_inner_joins join_root, child
|
|
}
|
|
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
|
|
end
|
|
end
|