Class: Filterameter::Filters::MatchesFilter

Inherits:
Object
  • Object
show all
Defined in:
lib/filterameter/filters/matches_filter.rb

Overview

Matches Filter

Class MatchesFilter uses arel’s ‘matches` to generate a LIKE query.

Instance Method Summary collapse

Constructor Details

#initialize(attribute_name, options) ⇒ MatchesFilter

Returns a new instance of MatchesFilter.



9
10
11
12
13
14
# File 'lib/filterameter/filters/matches_filter.rb', line 9

def initialize(attribute_name, options)
  @attribute_name = attribute_name
  @prefix = options.match_anywhere? ? '%' : nil
  @suffix = options.match_anywhere? || options.match_from_start? ? '%' : nil
  @case_sensitive = options.case_sensitive?
end

Instance Method Details

#apply(query, value) ⇒ Object



16
17
18
19
# File 'lib/filterameter/filters/matches_filter.rb', line 16

def apply(query, value)
  arel = query.arel_table[@attribute_name].matches("#{@prefix}#{value}#{@suffix}", false, @case_sensitive)
  query.where(arel)
end