Class: Cavalry::Validator::InlineValidator

Inherits:
Object
  • Object
show all
Defined in:
lib/cavalry/validator/group_validator.rb

Instance Method Summary collapse

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

#validateObject

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