class ActiveRecord::HierarchicalQuery::CTE::RecursiveTerm
Attributes
builder[R]
@return [ActiveRecord::HierarchicalQuery::CTE::Query]
Public Class Methods
new(builder)
click to toggle source
@param [ActiveRecord::HierarchicalQuery::CTE::QueryBuilder] builder
# File lib/active_record/hierarchical_query/cte/recursive_term.rb, line 11 def initialize(builder) @builder = builder end
Public Instance Methods
arel()
click to toggle source
# File lib/active_record/hierarchical_query/cte/recursive_term.rb, line 19 def arel arel = scope.arel .join(query.recursive_table).on(query.join_conditions) builder.cycle_detector.apply_to_recursive(arel) end
bind_values()
click to toggle source
# File lib/active_record/hierarchical_query/cte/recursive_term.rb, line 15 def bind_values scope.bound_attributes end
Private Instance Methods
columns()
click to toggle source
# File lib/active_record/hierarchical_query/cte/recursive_term.rb, line 31 def columns columns = builder.columns.to_a columns << ordering if query.orderings.any? columns end
ordering()
click to toggle source
# File lib/active_record/hierarchical_query/cte/recursive_term.rb, line 37 def ordering column_name = query.ordering_column_name left = query.recursive_table[column_name] right = query.orderings.row_number_expression Arel::Nodes::ArrayConcat.new(left, right) end
scope()
click to toggle source
# File lib/active_record/hierarchical_query/cte/recursive_term.rb, line 27 def scope @scope ||= query.child_scope_value.select(columns).reorder(nil) end