Method: OrderQuery::Space#initialize

Defined in:
lib/order_query/space.rb

#initialize(base_scope, order_spec) ⇒ Space

Returns a new instance of Space.

Parameters:

  • base_scope (ActiveRecord::Relation)
  • order_spec (Array<Array<Symbol,String>>)

See Also:



15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/order_query/space.rb', line 15

def initialize(base_scope, order_spec)
  @base_scope = base_scope
  @columns = order_spec.map do |cond_spec|
    Column.new(base_scope, *cond_spec)
  end
  # add primary key if columns are not unique
  unless @columns.last.unique?
    if @columns.detect(&:unique?)
      fail ArgumentError, 'Unique column must be last'
    end
    @columns << Column.new(base_scope, base_scope.primary_key)
  end
  @order_by_sql = SQL::OrderBy.new(@columns)
end