Module: ActsAsRecursiveTree::Builders::Strategy::Join
- Defined in:
- lib/acts_as_recursive_tree/builders/strategy/join.rb
Overview
Build a relation using an INNER JOIN.
Class Method Summary collapse
- .apply_order(builder, relation) ⇒ Object
-
.build(builder) ⇒ ActiveRecord::Relation
Builds the relation.
Class Method Details
.apply_order(builder, relation) ⇒ Object
26 27 28 29 |
# File 'lib/acts_as_recursive_tree/builders/strategy/join.rb', line 26 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) ⇒ ActiveRecord::Relation
Builds the relation.
13 14 15 16 17 18 19 20 21 22 23 24 |
# File 'lib/acts_as_recursive_tree/builders/strategy/join.rb', line 13 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) relation = apply_order(builder, relation) relation end |