Class: Reform::Form::Dry::Validations::Group

Inherits:
Object
  • Object
show all
Includes:
InputHash
Defined in:
lib/reform/form/dry.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(**options) ⇒ Group

Returns a new instance of Group.



31
32
33
34
# File 'lib/reform/form/dry.rb', line 31

def initialize(**options)
  @validator = options.fetch(:contract, Contract)
  @schema_inject_params = options.fetch(:with, {})
end

Instance Attribute Details

#blockObject (readonly)

Returns the value of attribute block.



36
37
38
# File 'lib/reform/form/dry.rb', line 36

def block
  @block
end

#schema_inject_paramsObject (readonly)

Returns the value of attribute schema_inject_params.



36
37
38
# File 'lib/reform/form/dry.rb', line 36

def schema_inject_params
  @schema_inject_params
end

#validatorObject (readonly)

Returns the value of attribute validator.



36
37
38
# File 'lib/reform/form/dry.rb', line 36

def validator
  @validator
end

Instance Method Details

#call(form) ⇒ Object



42
43
44
45
46
47
48
49
50
# File 'lib/reform/form/dry.rb', line 42

def call(form)
  # when passing options[:schema] the class instance is already created so we just need to call
  # "call"
  return validator.call(input_hash(form)) unless validator.is_a?(Class) && @validator <= ::Dry::Validation::Contract

  dynamic_options = { form: form }
  inject_options = schema_inject_params.merge(dynamic_options)
  contract.new(inject_options).call(input_hash(form))
end

#contractObject



52
53
54
# File 'lib/reform/form/dry.rb', line 52

def contract
  @contract ||= Class.new(validator, &block)
end

#instance_exec(&block) ⇒ Object



38
39
40
# File 'lib/reform/form/dry.rb', line 38

def instance_exec(&block)
  @block = block
end