Class: ActiveRecord::HierarchicalQuery::CTE::Orderings
- Inherits:
-
Object
- Object
- ActiveRecord::HierarchicalQuery::CTE::Orderings
- Includes:
- Enumerable
- Defined in:
- lib/active_record/hierarchical_query/cte/orderings.rb
Constant Summary collapse
- ORDERING_COLUMN_ALIAS =
'__order_column'- NATURAL_SORT_TYPES =
Set[ :integer, :float, :decimal, :datetime, :timestamp, :time, :date, :boolean, :itet, :cidr, :ltree ]
Instance Method Summary collapse
- #arel_nodes ⇒ Object
- #column_name ⇒ Object
-
#initialize(builder) ⇒ Orderings
constructor
A new instance of Orderings.
- #row_number_expression ⇒ Object
Constructor Details
#initialize(builder) ⇒ Orderings
Returns a new instance of Orderings.
22 23 24 |
# File 'lib/active_record/hierarchical_query/cte/orderings.rb', line 22 def initialize(builder) @builder = builder end |
Instance Method Details
#arel_nodes ⇒ Object
26 27 28 29 30 |
# File 'lib/active_record/hierarchical_query/cte/orderings.rb', line 26 def arel_nodes @arel_nodes ||= @builder.order_values.each_with_object([]) do |value, orderings| orderings.concat Array.wrap(as_orderings(value)) end end |
#column_name ⇒ Object
40 41 42 |
# File 'lib/active_record/hierarchical_query/cte/orderings.rb', line 40 def column_name ORDERING_COLUMN_ALIAS end |
#row_number_expression ⇒ Object
32 33 34 35 36 37 38 |
# File 'lib/active_record/hierarchical_query/cte/orderings.rb', line 32 def row_number_expression if raw_ordering? order_attribute else Arel.sql("ROW_NUMBER() OVER (ORDER BY #{arel_nodes.map(&:to_sql).join(', ')})") end end |