module RiceCooker::Sort::ClassMethods

Public Instance Methods

sorted(default_sorting_params = { id: :desc }) click to toggle source

Will handle collection (index) sorting on inherited resource controllers

All endpoints support multiple sort fields by allowing comma-separated (`,`) sort fields. Sort fields are applied in the order specified. The sort order for each sort field is ascending unless it is prefixed with a minus (U+002D HYPHEN-MINUS, “-“), in which case it is descending.

Calls superclass method
# File lib/rice_cooker/sort.rb, line 20
def sorted(default_sorting_params = { id: :desc })
  cattr_accessor :default_order
  cattr_accessor :sorted_keys

  return unless sorted_keys.nil? || resource_model.nil?

  default_sorting_params = { default_sorting_params => :asc } if default_sorting_params.is_a? Symbol

  # On recupere le default
  self.default_order = default_sorting_params
  self.sorted_keys = (resource_model.respond_to?(:sortable_fields) ? resource_model.sortable_fields : [])
  default_sort = param_from_defaults(default_sorting_params)

  has_scope :sort, default: default_sort, only: [:index] do |controller, scope, value|
    scope = if controller.params[SORT_PARAM].present?
              apply_sort_to_collection(scope, parse_sorting_param(value, resource_model))
            else
              apply_sort_to_collection(scope, default_sorting_params)
            end
    scope
  end

rescue NoMethodError => e
  "Just wanna die ⚓️ #{e}"
  super
end