Module: PoorManSearch::Searchable
- Defined in:
- lib/poor_man_search/searchable.rb
Instance Method Summary collapse
- #associative_search(key_words_string, *associations) ⇒ Object
- #number_search(*fields) ⇒ Object
- #search(key_words_string) ⇒ Object
- #string_search(*fields) ⇒ Object
- #time_range(*fields) ⇒ Object
- #time_search(*fields) ⇒ Object
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 |