class Volt::LengthValidator

Public Class Methods

validate(model, field_name, args) click to toggle source
# File lib/volt/models/validators/length_validator.rb, line 3
def self.validate(model, field_name, args)
  errors = {}
  value  = model.get(field_name)

  if args.is_a?(Fixnum)
    min     = args
    max     = nil
    message = nil
  elsif args.is_a?(Hash)
    min = args[:length] || args[:minimum]
    max = args[:maximum]
    fail 'length or minimum must be specified' unless min.is_a?(Fixnum)

    message = args[:message]
  else
    fail 'The arguments to length must be a number or a hash'
  end

  if !value || value.size < min
    errors[field_name] = [message || "must be at least #{min} characters"]
  elsif max && value.size > max
    errors[field_name] = [message || "must be less than #{max} characters"]
  end

  errors
end