Module: Searchlogic::NamedScopes::Associations
- Defined in:
- lib/searchlogic/named_scopes/associations.rb
Overview
Handles dynamically creating named scopes for associations.
Instance Method Summary collapse
-
#association_alias_condition?(name) ⇒ Boolean
Is the ane of the method a valie name for an association alias condition? An alias being “gt” for “greater_than”, etc.
-
#association_condition?(name) ⇒ Boolean
Is the name of the method a valid name for an association condition?.
-
#condition?(name) ⇒ Boolean
:nodoc:.
-
#primary_condition_name(name) ⇒ Object
:nodoc:.
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(name, *args, &block) ⇒ Object (private)
33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
# File 'lib/searchlogic/named_scopes/associations.rb', line 33 def method_missing(name, *args, &block) if details = association_condition_details(name) create_association_condition(details[:association], details[:column], details[:condition], args) send(name, *args) elsif details = association_alias_condition_details(name) create_association_alias_condition(details[:association], details[:column], details[:condition], args) send(name, *args) elsif details = association_ordering_condition_details(name) create_association_ordering_condition(details[:association], details[:order_as], details[:column], args) send(name, *args) else super end end |
Instance Method Details
#association_alias_condition?(name) ⇒ Boolean
Is the ane of the method a valie name for an association alias condition? An alias being “gt” for “greater_than”, etc.
28 29 30 |
# File 'lib/searchlogic/named_scopes/associations.rb', line 28 def association_alias_condition?(name) !association_alias_condition_details(name).nil? end |
#association_condition?(name) ⇒ Boolean
Is the name of the method a valid name for an association condition?
22 23 24 |
# File 'lib/searchlogic/named_scopes/associations.rb', line 22 def association_condition?(name) !association_condition_details(name).nil? end |
#condition?(name) ⇒ Boolean
:nodoc:
5 6 7 |
# File 'lib/searchlogic/named_scopes/associations.rb', line 5 def condition?(name) # :nodoc: super || association_condition?(name) || association_alias_condition?(name) end |
#primary_condition_name(name) ⇒ Object
:nodoc:
9 10 11 12 13 14 15 16 17 18 19 |
# File 'lib/searchlogic/named_scopes/associations.rb', line 9 def primary_condition_name(name) # :nodoc: if result = super result elsif association_condition?(name) name.to_sym elsif details = association_alias_condition_details(name) "#{details[:association]}_#{details[:column]}_#{primary_condition(details[:condition])}".to_sym else nil end end |