Module: ActiveRecordExtended::LtreeSelectMethods

Extended by:
ActiveSupport::Concern
Defined in:
lib/active_record_extended/ltree_query_methods.rb

Overview

SELECT clause helpers - mixed into ActiveRecord::Base

Class Method Summary collapse

Class Method Details

.order_by_ltree_depth(column, direction = :asc) ⇒ Object



156
157
158
# File 'lib/active_record_extended/ltree_query_methods.rb', line 156

def order_by_ltree_depth(column, direction = :asc)
  order(Arel.sql("nlevel(#{table_name}.#{column}) #{direction}"))
end

.select_ltree_depth(column, alias_name = nil) ⇒ Object



130
131
132
133
# File 'lib/active_record_extended/ltree_query_methods.rb', line 130

def select_ltree_depth(column, alias_name = nil)
  alias_name ||= "#{column}_depth"
  select("#{table_name}.*, nlevel(#{table_name}.#{column}) as #{alias_name}")
end

.select_ltree_parent(column, alias_name = nil) ⇒ Object



140
141
142
143
# File 'lib/active_record_extended/ltree_query_methods.rb', line 140

def select_ltree_parent(column, alias_name = nil)
  alias_name ||= "#{column}_parent"
  select("#{table_name}.*, subpath(#{table_name}.#{column}, 0, nlevel(#{table_name}.#{column}) - 1) as #{alias_name}")
end

.select_ltree_root(column, alias_name = nil) ⇒ Object



135
136
137
138
# File 'lib/active_record_extended/ltree_query_methods.rb', line 135

def select_ltree_root(column, alias_name = nil)
  alias_name ||= "#{column}_root"
  select("#{table_name}.*, subpath(#{table_name}.#{column}, 0, 1) as #{alias_name}")
end

.select_ltree_subpath(column, offset, len = nil, alias_name: nil) ⇒ Object

Parameters:

  • alias_name (Object, nil) (defaults to: nil)


146
147
148
149
150
151
152
153
154
# File 'lib/active_record_extended/ltree_query_methods.rb', line 146

def select_ltree_subpath(column, offset, len = nil, alias_name: nil)
  alias_name ||= "#{column}_subpath"
  subpath_sql = if len
                  "subpath(#{table_name}.#{column}, #{offset}, #{len})"
                else
                  "subpath(#{table_name}.#{column}, #{offset})"
                end
  select("#{table_name}.*, #{subpath_sql} as #{alias_name}")
end