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) ⇒ ActiveRecord::Relation
Relation ordered by ltree depth.
-
.select_ltree_depth(column, alias_name = nil) ⇒ ActiveRecord::Relation
Relation selecting the ltree depth column.
-
.select_ltree_parent(column, alias_name = nil) ⇒ ActiveRecord::Relation
Relation selecting the ltree parent column.
-
.select_ltree_root(column, alias_name = nil) ⇒ ActiveRecord::Relation
Relation selecting the ltree root column.
-
.select_ltree_subpath(column, offset, len = nil, alias_name: nil) ⇒ ActiveRecord::Relation
Relation selecting the ltree subpath column.
Class Method Details
.order_by_ltree_depth(column, direction = :asc) ⇒ ActiveRecord::Relation
Returns relation ordered by ltree depth.
183 184 185 |
# File 'lib/active_record_extended/ltree_query_methods.rb', line 183 def order_by_ltree_depth(column, direction = :asc) order(Arel.sql("nlevel(#{table_name}.#{column}) #{direction}")) end |
.select_ltree_depth(column, alias_name = nil) ⇒ ActiveRecord::Relation
Returns relation selecting the ltree depth column.
150 151 152 153 |
# File 'lib/active_record_extended/ltree_query_methods.rb', line 150 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) ⇒ ActiveRecord::Relation
Returns relation selecting the ltree parent column.
162 163 164 165 |
# File 'lib/active_record_extended/ltree_query_methods.rb', line 162 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) ⇒ ActiveRecord::Relation
Returns relation selecting the ltree root column.
156 157 158 159 |
# File 'lib/active_record_extended/ltree_query_methods.rb', line 156 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) ⇒ ActiveRecord::Relation
Returns relation selecting the ltree subpath column.
172 173 174 175 176 177 178 179 180 |
# File 'lib/active_record_extended/ltree_query_methods.rb', line 172 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 |