Class: HalApi::Controller::Filtering::FilterParams

Inherits:
OpenStruct
  • Object
show all
Defined in:
lib/hal_api/controller/filtering.rb

Instance Method Summary collapse

Constructor Details

#initialize(filters = {}) ⇒ FilterParams

Returns a new instance of FilterParams.



12
13
14
# File 'lib/hal_api/controller/filtering.rb', line 12

def initialize(filters = {})
  @filters = filters.with_indifferent_access
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(m, *args, &_block) ⇒ Object



16
17
18
19
20
21
22
23
24
25
26
# File 'lib/hal_api/controller/filtering.rb', line 16

def method_missing(m, *args, &_block)
  if @filters.key?(m) && args.empty?
    @filters[m]
  elsif m.to_s[-1] == '?' && args.empty? && @filters.key?(m.to_s.chop)
    !!@filters[m.to_s.chop]
  else
    msg = "Unknown filter param '#{m}'"
    hint = "Valid filters are: #{@filters.keys.join(' ')}"
    raise HalApi::Errors::UnknownFilterError.new(msg, hint)
  end
end