activerecord-hackery--ransack/lib/polyamorous/activerecord_4.2_ruby_2/join_dependency.rb

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