Class: RailsSimpleSearch::Base
- Inherits:
-
Object
- Object
- RailsSimpleSearch::Base
show all
- Defined in:
- lib/rails-simple-search.rb
Class Method Summary
collapse
Instance Method Summary
collapse
Constructor Details
#initialize(model_class, criteria = {}, config = {}) ⇒ Base
Returns a new instance of Base.
27
28
29
30
31
32
33
34
35
36
|
# File 'lib/rails-simple-search.rb', line 27
def initialize(model_class, criteria={}, config={})
@criteria = sanitize_criteria(criteria)
@config = DEFAULT_CONFIG.merge(config)
@config[:exact_match] = [@config[:exact_match]] unless @config[:exact_match].respond_to?(:map!)
@config[:exact_match].map!{|em| em.to_s}
@model_class = (model_class.is_a?(Symbol) || model_class.is_a?(String))? model_class.to_s.camelize.constantize : model_class
load_database_handler(@model_class)
init
end
|
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(method, *args) ⇒ Object
56
57
58
59
60
61
62
63
|
# File 'lib/rails-simple-search.rb', line 56
def method_missing(method, *args)
method_str = method.to_s
if method_str =~ /^([^=]+)=$/
@criteria[$1.to_s] = args[0]
else
@criteria[method_str]
end
end
|
Class Method Details
.inherited(subclass) ⇒ Object
15
16
17
18
19
20
21
22
23
24
25
|
# File 'lib/rails-simple-search.rb', line 15
def self.inherited(subclass)
class << subclass
def model_name
ActiveModel::Name.new(self)
end
end
subclass.send(:include, RailsSimpleSearch::FixModelName)
end
|
Instance Method Details
#add_conditions(h = {}) ⇒ Object
50
51
52
|
# File 'lib/rails-simple-search.rb', line 50
def add_conditions(h={})
@criteria.merge!(h)
end
|
#count ⇒ Object
46
47
48
|
# File 'lib/rails-simple-search.rb', line 46
def count
@count || 0
end
|
#load_database_handler(model_class) ⇒ Object
38
39
40
41
42
43
44
|
# File 'lib/rails-simple-search.rb', line 38
def load_database_handler(model_class)
if model_class.ancestors.include?(ActiveRecord::Base)
RailsSimpleSearch::Base.send(:include, RailsSimpleSearch::SqlHandler)
else
raise("RailsSimpleSearch only supports ActiveRecord for now")
end
end
|