Sha256: 4c9ee661f1cf2da17c9790ad4387952c72c5b4cf394d062ac7b9b347e717e0e0

Contents?: true

Size: 539 Bytes

Versions: 6

Compression:

Stored size: 539 Bytes

Contents

module JsonapiCompliable
  class Scope::Sort < Scope::Base
    def custom_scope
      dsl.sorting
    end

    def apply_standard_scope
      @scope.order(attribute => direction)
    end

    def apply_custom_scope
      custom_scope.call(@scope, attribute, direction)
    end

    private

    def sort_param
      @sort_param ||= (params[:sort] || @controller.default_sort)
    end

    def direction
      sort_param.starts_with?('-') ? :desc : :asc
    end

    def attribute
      sort_param.dup.sub('-', '').to_sym
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
jsonapi_compliable-0.4.0 lib/jsonapi_compliable/scope/sort.rb
jsonapi_compliable-0.3.10 lib/jsonapi_compliable/scope/sort.rb
jsonapi_compliable-0.3.9 lib/jsonapi_compliable/scope/sort.rb
jsonapi_compliable-0.3.8 lib/jsonapi_compliable/scope/sort.rb
jsonapi_compliable-0.3.7 lib/jsonapi_compliable/scope/sort.rb
jsonapi_compliable-0.3.6 lib/jsonapi_compliable/scope/sort.rb