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