class ActiveRecord::HierarchicalQuery::CTE::Columns
Public Class Methods
new(query)
click to toggle source
@param [ActiveRecord::HierarchicalQuery::Query] query
# File lib/active_record/hierarchical_query/cte/columns.rb, line 6 def initialize(query) @query = query end
Public Instance Methods
to_a()
click to toggle source
returns columns to be selected from both recursive and non-recursive terms
# File lib/active_record/hierarchical_query/cte/columns.rb, line 11 def to_a column_names = [@query.klass.primary_key] | connect_by_columns column_names.map { |name| @query.table[name] } end
Also aliased as: to_ary
Private Instance Methods
connect_by_columns()
click to toggle source
# File lib/active_record/hierarchical_query/cte/columns.rb, line 18 def connect_by_columns columns = [] traverse(@query.join_conditions) do |node| columns << node.name.to_s if node.is_a?(Arel::Attributes::Attribute) end columns end
traverse(ast) { |ast| ... }
click to toggle source
# File lib/active_record/hierarchical_query/cte/columns.rb, line 26 def traverse(ast, &blck) if ast && ast.respond_to?(:left) && ast.left traverse(ast.left, &blck) end if ast && ast.respond_to?(:right) && ast.right traverse(ast.right, &blck) end yield ast end