Class: Filterameter::Helpers::DeclarationWithModel
- Inherits:
-
Object
- Object
- Filterameter::Helpers::DeclarationWithModel
- Defined in:
- lib/filterameter/helpers/declaration_with_model.rb
Overview
# Declaration with Model
Class DeclarationWithModel inspects the declaration under the context of the model. This enables predicate methods as well as drilling through associations.
Instance Method Summary collapse
- #any_collections? ⇒ Boolean
-
#initialize(model, declaration) ⇒ DeclarationWithModel
constructor
A new instance of DeclarationWithModel.
- #model_from_association ⇒ Object
- #scope? ⇒ Boolean
Constructor Details
#initialize(model, declaration) ⇒ DeclarationWithModel
Returns a new instance of DeclarationWithModel.
10 11 12 13 |
# File 'lib/filterameter/helpers/declaration_with_model.rb', line 10 def initialize(model, declaration) @model = model @declaration = declaration end |
Instance Method Details
#any_collections? ⇒ Boolean
23 24 25 26 27 28 29 30 31 32 |
# File 'lib/filterameter/helpers/declaration_with_model.rb', line 23 def any_collections? @declaration.association.reduce(@model) do |, name| association = .reflect_on_association(name) return true if association.collection? association.klass end false end |
#model_from_association ⇒ Object
34 35 36 37 38 39 40 41 |
# File 'lib/filterameter/helpers/declaration_with_model.rb', line 34 def model_from_association @declaration.association.flatten.reduce(@model) do |memo, name| association = memo.reflect_on_association(name) raise_invalid_association if association.nil? association.klass end end |
#scope? ⇒ Boolean
15 16 17 18 19 20 21 |
# File 'lib/filterameter/helpers/declaration_with_model.rb', line 15 def scope? model = @declaration.nested? ? model_from_association : @model model.respond_to?(@declaration.name) && # checking dangerous_class_method? excludes any names that cannot be scope names, such as "name" !model.dangerous_class_method?(@declaration.name) end |