5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
# 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) }
exact_ids = dsl.exact_matches.flat_map do |em|
value = exact_match_value(em, cleaned)
next [] if value.nil? || value.to_s.empty?
relation.where(em.name => value).pluck(:id)
end
exact_ids.uniq
end
|