class Sullivan::Validations::Many
Public Class Methods
new(validation, at_least: nil, at_most: nil)
click to toggle source
# File lib/sullivan/validations/many.rb, line 4 def initialize(validation, at_least: nil, at_most: nil) @validation = validation @at_least = at_least @at_most = at_most end
Public Instance Methods
validate(values)
click to toggle source
# File lib/sullivan/validations/many.rb, line 10 def validate(values) return 'must be an array' unless values.respond_to?(:map) return "must contain at least #{num_elements(@at_least)}" if @at_least && values.size < @at_least return "must contain at most #{num_elements(@at_most)}" if @at_most && values.size > @at_most errors = values.map do |value| @validation.validate(value) end errors unless errors.all?(&:nil?) end
Private Instance Methods
num_elements(n)
click to toggle source
# File lib/sullivan/validations/many.rb, line 24 def num_elements(n) "#{n} #{n == 1 ? 'element' : 'elements'}" end