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
- .order_by_ltree_depth(column, direction = :asc) ⇒ Object
- .select_ltree_depth(column, alias_name = nil) ⇒ Object
- .select_ltree_parent(column, alias_name = nil) ⇒ Object
- .select_ltree_root(column, alias_name = nil) ⇒ Object
- .select_ltree_subpath(column, offset, len = nil, alias_name: nil) ⇒ Object
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
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 |