Module: PoorManSearch::Searchable

Defined in:
lib/poor_man_search/searchable.rb

Instance Method Summary collapse

Instance Method Details

#associative_search(key_words_string, *associations) ⇒ Object



34
35
36
37
38
39
40
# File 'lib/poor_man_search/searchable.rb', line 34

def associative_search key_words_string, *associations
  ids = search(key_words_string).select("#{self.table_name}.id")
  ids += associations.collect{|as|
    scoped.includes(as).merge(asociation_class(as).search(key_words_string)).select("#{self.table_name}.id")
  }.flatten
  where(:id => ids.uniq)
end

#number_search(*fields) ⇒ Object



7
8
9
# File 'lib/poor_man_search/searchable.rb', line 7

def number_search *fields
  @number_fields = fields
end

#search(key_words_string) ⇒ Object



19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/poor_man_search/searchable.rb', line 19

def search key_words_string
  criteria = Criteria.new key_words_string
  t = self.arel_table

  search_scope = scoped
  clauses = string_clauses(t, criteria)
  clauses << number_clause(t, criteria)
  clauses << time_clause(t, criteria)

  clauses.compact.each{|clause|
    search_scope = search_scope.where(clause)
  }
  search_scope
end

#string_search(*fields) ⇒ Object



3
4
5
# File 'lib/poor_man_search/searchable.rb', line 3

def string_search *fields
  @string_fields = fields
end

#time_range(*fields) ⇒ Object



15
16
17
# File 'lib/poor_man_search/searchable.rb', line 15

def time_range *fields
  @time_fields = fields
end

#time_search(*fields) ⇒ Object



11
12
13
# File 'lib/poor_man_search/searchable.rb', line 11

def time_search *fields
  @time_fields = fields
end