class Croesus::Validator::ManyValidator

Public Class Methods

new() click to toggle source
Calls superclass method Croesus::Validator::Base::new
# File lib/croesus/validators/many_validator.rb, line 22
def initialize
  super('_many')  # The name of the validator, underscored as it won't usually be directly invoked (invoked through use of validator)
end

Public Instance Methods

presence_error_message() click to toggle source
# File lib/croesus/validators/many_validator.rb, line 30
def presence_error_message
  "enumerable required"
end
should_validate?(validation) click to toggle source
# File lib/croesus/validators/many_validator.rb, line 26
def should_validate?(validation)
  validation.is_a?(Croesus::Validations::Many)
end
validate(key, value, validations, errors) click to toggle source
# File lib/croesus/validators/many_validator.rb, line 34
def validate(key, value, validations, errors)
  unless value.is_a?(Enumerable)
    errors[key] = presence_error_message
    return
  end

  element_errors = Array.new

  value.each_with_index do |element, i|
    ::Croesus.validator_for(validations.validation).validate(i, element, validations.validation, element_errors)
  end

  element_errors.each_with_index do |e, i|
    if e.respond_to?(:empty?) && e.empty?
      element_errors[i] = nil
    end
  end

  errors[key] = element_errors unless element_errors.all?(&:nil?)
end