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 36 |
# 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 allowed_fields = allowed_fields.map(&:to_sym) default_order = [:default].presence || @default_sort default_order = default_order.transform_keys(&:to_sym) ordered_fields = convert_to_ordered_hash(fields) filtered_fields = ordered_fields.select { |key, _| allowed_fields.include?(key) } order = filtered_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 |