class Mincer::Processors::Sorting::Processor

Public Class Methods

new(mincer) click to toggle source
# File lib/mincer/processors/sorting/processor.rb, line 5
def initialize(mincer)
  @mincer, @args, @relation = mincer, mincer.args, mincer.relation
end

Public Instance Methods

apply() click to toggle source
# File lib/mincer/processors/sorting/processor.rb, line 9
def apply
  sorting_sting = sort_string
  if sorting_sting.present?
    @mincer.sort_attribute = (sort_attr || default_sort).to_s
    @mincer.sort_order = (order_attr || default_order).to_s
    @mincer.default_sorting = sort_attr.blank? && order_attr.blank?
    @relation.order(sorting_sting)
  else
    @relation
  end
end
default_order() click to toggle source
# File lib/mincer/processors/sorting/processor.rb, line 45
def default_order
  @mincer.try(:default_sort_order)
end
default_sort() click to toggle source
# File lib/mincer/processors/sorting/processor.rb, line 37
def default_sort
  @mincer.try(:default_sort_attribute)
end
order() click to toggle source
# File lib/mincer/processors/sorting/processor.rb, line 41
def order
  @args[::Mincer.config.sorting.order_param_name]
end
order_attr() click to toggle source
# File lib/mincer/processors/sorting/processor.rb, line 29
def order_attr
  (%w{asc desc}.include?(order.try(:downcase)) && order)
end
sort() click to toggle source
# File lib/mincer/processors/sorting/processor.rb, line 33
def sort
  @args[::Mincer.config.sorting.sort_param_name]
end
sort_attr() click to toggle source
# File lib/mincer/processors/sorting/processor.rb, line 25
def sort_attr
  (@mincer.send(:allowed_sort_attributes).include?(sort) && sort)
end
sort_string() click to toggle source
# File lib/mincer/processors/sorting/processor.rb, line 21
def sort_string
  [(sort_attr || default_sort), (order_attr || default_order)].compact.uniq.join(' ')
end