Sha256: b55045b95076ad41bdd9a7a24d02709da0c21e72082f47198f1905e1d5fc6f8e

Contents?: true

Size: 712 Bytes

Versions: 8

Compression:

Stored size: 712 Bytes

Contents

module JsonapiCompliable
  class Scope::Filter < Scope::Base
    include Scope::Filterable

    def apply
      each_filter do |filter, value|
        @scope = filter_scope(filter, value)
      end

      @scope
    end

    def filter_scope(filter, value)
      if custom_scope = filter.values.first[:filter]
        custom_scope.call(@scope, value)
      else
        @scope.where(filter.keys.first => value)
      end
    end

    private

    def each_filter
      filter_param.each_pair do |param_name, param_value|
        filter = find_filter!(param_name.to_sym)
        value  = param_value
        value  = value.split(',') if value.include?(',')
        yield filter, value
      end
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
jsonapi_compliable-0.4.0 lib/jsonapi_compliable/scope/filter.rb
jsonapi_compliable-0.3.10 lib/jsonapi_compliable/scope/filter.rb
jsonapi_compliable-0.3.9 lib/jsonapi_compliable/scope/filter.rb
jsonapi_compliable-0.3.8 lib/jsonapi_compliable/scope/filter.rb
jsonapi_compliable-0.3.7 lib/jsonapi_compliable/scope/filter.rb
jsonapi_compliable-0.3.6 lib/jsonapi_compliable/scope/filter.rb
jsonapi_compliable-0.3.5 lib/jsonapi_compliable/scope/filter.rb
jsonapi_compliable-0.3.4 lib/jsonapi_compliable/scope/filter.rb