module ActsAsRecursiveTree::Builders::Strategies::Join
Build a relation using an INNER JOIN.
Public Class Methods
apply_order(builder, relation)
click to toggle source
# File lib/acts_as_recursive_tree/builders/strategies/join.rb, line 27 def self.apply_order(builder, relation) return relation unless builder.ensure_ordering relation.order(builder.recursive_temp_table[builder.depth_column].asc) end
build(builder)
click to toggle source
Builds the relation.
@param builder [ActsAsRecursiveTree::Builders::RelationBuilder] @return [ActiveRecord::Relation]
# File lib/acts_as_recursive_tree/builders/strategies/join.rb, line 15 def self.build(builder) final_select_mgr = builder.base_table.join( builder.create_select_manger.as(builder.recursive_temp_table.name) ).on( builder.base_table[builder.primary_key].eq(builder.recursive_temp_table[builder.primary_key]) ) relation = builder.klass.joins(final_select_mgr.join_sources) apply_order(builder, relation) end