Sha256: 08d0df801909a6f2df95733c380efd47cc715ef6d2ca81ad789028b43ac56997

Contents?: true

Size: 847 Bytes

Versions: 1

Compression:

Stored size: 847 Bytes

Contents

module ActsAsRecursiveTree
  module Builders
    module Strategy
      #
      # Build a relation using an INNER JOIN.
      #
      module Join
        #
        # Builds the relation.
        #
        # @param builder [ActsAsRecursiveTree::Builders::RelationBuilder]
        # @return [ActiveRecord::Relation]
        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 = builder.apply_depth(relation)
          relation = builder.apply_order(relation)
          relation
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
acts_as_recursive_tree-2.1.0 lib/acts_as_recursive_tree/builders/strategy/join.rb