Class: QuickSearch::ClassicQuickSearch

Inherits:
BaseQuickSearch
  • Object
show all
Defined in:
app/queries/quick_search/classic_quick_search.rb

Overview

A classic quick search is where we define the REFERENCE_NUMBER_PATTERN as a constant in the class and where the query term is reference_number

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(fallback) ⇒ ClassicQuickSearch

Returns a new instance of ClassicQuickSearch.



5
6
7
8
# File 'app/queries/quick_search/classic_quick_search.rb', line 5

def initialize(fallback)
  @core_model = self.class.name.scan(/QuickSearch::(.*)QuickSearch/).join.constantize
  super(fallback)
end

Instance Attribute Details

#core_modelObject (readonly)

Returns the value of attribute core_model.



3
4
5
# File 'app/queries/quick_search/classic_quick_search.rb', line 3

def core_model
  @core_model
end

Instance Method Details

#authoritative_searchObject

An authoritative search returning results is final



23
24
25
# File 'app/queries/quick_search/classic_quick_search.rb', line 23

def authoritative_search
  true
end

#extract_term(query) ⇒ Object

This method extract the search params from the query, usually matches it against a regex pattern and if a result
is returned the query is performed using that returned term



12
13
14
15
# File 'app/queries/quick_search/classic_quick_search.rb', line 12

def extract_term(query)
  term_regex = core_model.const_get(:REFERENCE_NUMBER_PATTERN)
  query.scan(term_regex).join.upcase
end

#perform_find(term, existing_results = []) ⇒ Object

This is where you implement the actual finder method in arel style



18
19
20
# File 'app/queries/quick_search/classic_quick_search.rb', line 18

def perform_find(term, existing_results = [])
  core_model.where(reference_number: term)
end