Module: Croods::Resource::Filters

Defined in:
lib/croods/resource/filters.rb

Instance Method Summary collapse

Instance Method Details

#apply_filters(scope, params) ⇒ Object



16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/croods/resource/filters.rb', line 16

def apply_filters(scope, params)
  filters.each do |attribute|
    unless model.has_attribute?(attribute.name)
      attribute.name = "#{attribute.name}_id"
    end

    value = params[attribute.name]
    next unless value

    scope = scope.where(attribute.name => value)
  end

  scope
end

#filter_by(name, optional: nil) ⇒ Object



6
7
8
9
10
# File 'lib/croods/resource/filters.rb', line 6

def filter_by(name, optional: nil)
  filters << Croods::Attribute.new(
    name, :string, null: optional
  )
end

#filtersObject



12
13
14
# File 'lib/croods/resource/filters.rb', line 12

def filters
  @filters ||= []
end