Class: Cavalry::Validator::InlineValidator
- Inherits:
-
Object
- Object
- Cavalry::Validator::InlineValidator
- Defined in:
- lib/cavalry/validator/group_validator.rb
Instance Method Summary collapse
-
#initialize(source, context, &block) ⇒ InlineValidator
constructor
A new instance of InlineValidator.
-
#method_missing(method_name, *arg, &block) ⇒ Object
Modify the validation source when method is chained.
-
#validate ⇒ Object
execute.
Constructor Details
#initialize(source, context, &block) ⇒ InlineValidator
87 88 89 90 91 |
# File 'lib/cavalry/validator/group_validator.rb', line 87 def initialize(source, context, &block) @source = source @context = context @definition = block end |
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(method_name, *arg, &block) ⇒ Object
Modify the validation source when method is chained. if you pass a block to method, block will be stored as validation definition.
106 107 108 109 110 111 112 113 114 |
# File 'lib/cavalry/validator/group_validator.rb', line 106 def method_missing(method_name, *arg, &block) if @source.respond_to?(method_name) @source = @source.send(method_name, *arg) else fail DSLError, "Method #{method_name} is missing for #{@source.inspect}" end @definition = block if block_given? end |
Instance Method Details
#validate ⇒ Object
execute
94 95 96 97 98 99 100 101 102 |
# File 'lib/cavalry/validator/group_validator.rb', line 94 def validate fail(DSLError, "Give me a definition") unless @definition tap do @context.class.send(:define_method, :cavalry_validation, @definition) @context.send(:cavalry_validation, @source.respond_to?(:all) ? @source.all : @source) @context.class.send(:undef_method, :cavalry_validation) end end |