Class: Mincer::Processors::Sort

Inherits:
Object
  • Object
show all
Defined in:
lib/mincer/processors/sort.rb

Instance Method Summary collapse

Constructor Details

#initialize(mincer) ⇒ Sort

Returns a new instance of Sort.



5
6
7
# File 'lib/mincer/processors/sort.rb', line 5

def initialize(mincer)
  @mincer, @args, @relation = mincer, mincer.args, mincer.relation
end

Instance Method Details

#applyObject



9
10
11
12
13
# File 'lib/mincer/processors/sort.rb', line 9

def apply
  relation = @relation.order(sort_string)
  @mincer.sort_attribute, @mincer.sort_order = relation.try(:order_values).try(:first).try(:split)
  relation
end

#order_attrObject



23
24
25
# File 'lib/mincer/processors/sort.rb', line 23

def order_attr
  (%w{ASC DESC}.include?(@args['order']) && @args['order']) || @mincer.default_sort_order
end

#sort_attrObject



19
20
21
# File 'lib/mincer/processors/sort.rb', line 19

def sort_attr
  @mincer.allowed_sort_attributes.include?(@args['sort']) && @args['sort']
end

#sort_stringObject



15
16
17
# File 'lib/mincer/processors/sort.rb', line 15

def sort_string
  sort_attr ? "#{sort_attr} #{order_attr}, #{@mincer.default_sort_attribute}" : "#{@mincer.default_sort_attribute} #{order_attr}"
end