Class: FullSearch::ExactMatch

Inherits:
Object
  • Object
show all
Defined in:
lib/full_search/exact_match.rb

Class Method Summary collapse

Class Method Details

.ids_for(model, query, filters) ⇒ Object



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# File 'lib/full_search/exact_match.rb', line 5

def self.ids_for(model, query, filters)
  dsl = model.full_search_dsl
  return [] if dsl.exact_matches.empty?

  cleaned = query.to_s.strip
  return [] if cleaned.empty?

  relation = model.all
  filters.each { |name, value| relation = relation.where(name => value) }

  conditions = dsl.exact_matches.map do |em|
    relation.model.arel_table[em.name].eq(cleaned)
  end

  relation.where(conditions.reduce(:or)).pluck(:id)
end