Class: ActiveRecord::HierarchicalQuery::Visitors::PostgreSQL::CycleDetector
- Inherits:
-
Visitor
- Object
- Visitor
- ActiveRecord::HierarchicalQuery::Visitors::PostgreSQL::CycleDetector
show all
- Defined in:
- lib/active_record/hierarchical_query/visitors/postgresql/cycle_detector.rb
Constant Summary
collapse
- COLUMN_NAME =
'__path'.freeze
Instance Attribute Summary
Attributes inherited from Visitor
#query
Instance Method Summary
collapse
Methods inherited from Visitor
#initialize
Instance Method Details
#visit_non_recursive(arel) ⇒ Object
8
9
10
11
12
13
14
|
# File 'lib/active_record/hierarchical_query/visitors/postgresql/cycle_detector.rb', line 8
def visit_non_recursive(arel)
if enabled?
arel.project Arel::Nodes::PostgresArray.new([primary_key]).as(column_name)
end
arel
end
|
#visit_recursive(arel) ⇒ Object
16
17
18
19
20
21
22
23
|
# File 'lib/active_record/hierarchical_query/visitors/postgresql/cycle_detector.rb', line 16
def visit_recursive(arel)
if enabled?
arel.project Arel::Nodes::ArrayConcat.new(parent_column, primary_key)
arel.constraints << Arel::Nodes::Not.new(primary_key.eq(any(parent_column)))
end
arel
end
|