class Formulario::Field::UnvalidatedField
Attributes
default[RW]
field_name[RW]
field_type[RW]
form[RW]
validators[RW]
value[RW]
Public Class Methods
new( field_name: , value: nil, field_type: Field, default: Field.type_for(field_type).default, validators: [] )
click to toggle source
# File lib/formulario/fields/unvalidated_field.rb, line 13 def initialize( field_name: , value: nil, field_type: Field, default: Field.type_for(field_type).default, validators: [] ) @field_name = field_name @field_type = field_type @default = default @validators = validators end
Public Instance Methods
validate(validator=Undefined, message: Undefined, &validation_block)
click to toggle source
# File lib/formulario/fields/unvalidated_field.rb, line 31 def validate(validator=Undefined, message: Undefined, &validation_block) validation_function = case when block_given? validation_block when validator.is_a?(Symbol) validator when validator.is_a?(::Formulario::Validator) validator end validators << { validator: validation_function, message: message, } end
validate!(form)
click to toggle source
# File lib/formulario/fields/unvalidated_field.rb, line 49 def validate!(form) self.form = form validators.inject(field_type.for(value.value)) do |current_value, validator_hash| validator_block = case validator_hash[:validator] when ::Formulario::Validator validator_hash[:validator] when Symbol ::Formulario::Validator.new(&value.method(validator_hash[:validator])) when Proc ::Formulario::Validator.new(&validator_hash[:validator]) end if instance_exec(value: value.value, object: self, field_name: field_name, &validator_block.to_proc).valid? current_value else message = if validator_hash[:validator].is_a?(::Formulario::Validator) validator_hash[:validator].message end value.exceptional_class .new(current_value, reasons: message || validator_hash[:message]) end end end