Sha256: 98f9b8155390da3d81e98679fab4acda8a95b4f5bc00f33161955a8c025afd29

Contents?: true

Size: 833 Bytes

Versions: 10

Compression:

Stored size: 833 Bytes

Contents

module Volt
  class LengthValidator
    def self.validate(model, old_model, field_name, args)
      errors = {}
      value  = model.read_attribute(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 #{args} characters"]
      elsif max && value.size > max
        errors[field_name] = [message || "must be less than #{args} characters"]
      end

      errors
    end
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
volt-0.8.27.beta3 lib/volt/models/validators/length_validator.rb
volt-0.8.27.beta2 lib/volt/models/validators/length_validator.rb
volt-0.8.27.beta1 lib/volt/models/validators/length_validator.rb
volt-0.8.26.beta1 lib/volt/models/validators/length_validator.rb
volt-0.8.26 lib/volt/models/validators/length_validator.rb
volt-0.8.24 lib/volt/models/validators/length_validator.rb
volt-0.8.23 lib/volt/models/validators/length_validator.rb
volt-0.8.22 lib/volt/models/validators/length_validator.rb
volt-0.8.22.beta2 lib/volt/models/validators/length_validator.rb
volt-0.8.22.beta1 lib/volt/models/validators/length_validator.rb