Sha256: 4c6a744a89789bbc3a91b4a69ee5eece77c3757788d69f37270a0b4abd59bac8

Contents?: true

Size: 646 Bytes

Versions: 12

Compression:

Stored size: 646 Bytes

Contents

module JsonapiCompliable
  module Scoping::Filterable
    def find_filter(name)
      find_filter!(name)
    rescue JsonapiCompliable::Errors::BadFilter
      nil
    end

    def find_filter!(name)
      filter_name, filter_value = \
        resource.filters.find { |_name, opts| opts[:aliases].include?(name.to_sym) }
      raise JsonapiCompliable::Errors::BadFilter unless filter_name
      if guard = filter_value[:if]
        raise JsonapiCompliable::Errors::BadFilter if resource.context[:object].send(guard) == false
      end
      { filter_name => filter_value }
    end

    def filter_param
      query_hash[:filter]
    end
  end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
jsonapi_compliable-0.6.4 lib/jsonapi_compliable/scoping/filterable.rb
jsonapi_compliable-0.6.3 lib/jsonapi_compliable/scoping/filterable.rb
jsonapi_compliable-0.6.2 lib/jsonapi_compliable/scoping/filterable.rb
jsonapi_compliable-0.6.1 lib/jsonapi_compliable/scoping/filterable.rb
jsonapi_compliable-0.6.0 lib/jsonapi_compliable/scoping/filterable.rb
jsonapi_compliable-0.5.7 lib/jsonapi_compliable/scoping/filterable.rb
jsonapi_compliable-0.5.6 lib/jsonapi_compliable/scoping/filterable.rb
jsonapi_compliable-0.5.5 lib/jsonapi_compliable/scoping/filterable.rb
jsonapi_compliable-0.5.4 lib/jsonapi_compliable/scoping/filterable.rb
jsonapi_compliable-0.5.3 lib/jsonapi_compliable/scoping/filterable.rb
jsonapi_compliable-0.5.2 lib/jsonapi_compliable/scoping/filterable.rb
jsonapi_compliable-0.5.1 lib/jsonapi_compliable/scoping/filterable.rb