Module: ModernSearchlogic::ColumnConditions::ClassMethods
- Defined in:
- lib/modern_searchlogic/column_conditions.rb
Instance Method Summary
collapse
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(method, *args, &block) ⇒ Object
203
204
205
206
207
208
|
# File 'lib/modern_searchlogic/column_conditions.rb', line 203
def method_missing(method, *args, &block)
return super if abstract_class? || !searchlogic_schema_ready?
return super unless dynamically_define_searchlogic_method(method)
__send__(method, *args, &block)
end
|
Instance Method Details
#dynamically_define_searchlogic_method(method) ⇒ Object
20
21
22
23
24
25
26
|
# File 'lib/modern_searchlogic/column_conditions.rb', line 20
def dynamically_define_searchlogic_method(method)
return true if searchlogic_scope_dynamically_defined?(method)
return false unless (searchlogic_scope = searchlogic_column_condition_method_block(method.to_s))
singleton_class.__send__(:define_method, method, &searchlogic_scope[:block])
self._dynamically_defined_searchlogic_scopes = self._dynamically_defined_searchlogic_scopes.merge(method => searchlogic_scope)
true
end
|
#respond_to_missing?(method) ⇒ Boolean
8
9
10
|
# File 'lib/modern_searchlogic/column_conditions.rb', line 8
def respond_to_missing?(method, *)
super || valid_searchlogic_scope?(method)
end
|
#searchlogic_method_arity(method) ⇒ Object
28
29
30
31
32
33
34
35
36
|
# File 'lib/modern_searchlogic/column_conditions.rb', line 28
def searchlogic_method_arity(method)
method = method.to_sym
raise ArgumentError, "Not a searchlogic scope" unless valid_searchlogic_scope?(method)
dynamically_define_searchlogic_method(method)
searchlogic_scope_dynamically_defined?(method) ?
_dynamically_defined_searchlogic_scopes[method][:arity] :
self.method(method).arity
end
|
#valid_searchlogic_scope?(method) ⇒ Boolean
12
13
14
15
16
17
18
|
# File 'lib/modern_searchlogic/column_conditions.rb', line 12
def valid_searchlogic_scope?(method)
return false if abstract_class? || method =~ /^define_method_/ || !searchlogic_schema_ready?
searchlogic_scope_dynamically_defined?(method) ||
!!searchlogic_column_condition_method_block(method.to_s) ||
_defined_scopes.include?(method.to_sym)
end
|