Module: Jsonapi::Sort::ClassMethods
- Defined in:
- lib/jsonapi/scopes/sorts.rb
Instance Method Summary collapse
- #apply_sort(params = {}, options = { allowed: [], default: {} }) ⇒ Object
- #default_sort(sort) ⇒ Object
- #sortable_fields(*fields) ⇒ Object
Instance Method Details
#apply_sort(params = {}, options = { allowed: [], default: {} }) ⇒ Object
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/jsonapi/scopes/sorts.rb', line 21 def apply_sort(params = {}, = { allowed: [], default: {} }) fields = params.dig(:sort) allowed_fields = (Array.wrap([:allowed]).presence || @sortable_fields).map(&:to_sym) default_order = ([:default].presence || @default_sort).transform_keys(&:to_sym) ordered_fields = convert_to_ordered_hash(fields) ordered_fields.each do |field, _| raise InvalidAttributeError, "#{field} is not valid as sort attribute." unless allowed_fields.include?(field) end order = ordered_fields.presence || default_order self.order(order) end |
#default_sort(sort) ⇒ Object
13 14 15 |
# File 'lib/jsonapi/scopes/sorts.rb', line 13 def default_sort(sort) @default_sort = sort end |
#sortable_fields(*fields) ⇒ Object
17 18 19 |
# File 'lib/jsonapi/scopes/sorts.rb', line 17 def sortable_fields(*fields) @sortable_fields = fields end |