class Toolchain::Validations::Validators::Length

Validates the lengt of an attribute.

@example

class User::Creator
  validates :password, length: {
    between: 5..100,
    message: "must be between 5 and 100 characters long"
  }
end

class User::Creator
  validates :password, length: {
    greater_than: 5,
    less_than 100,
    message: "must be between 5 and 100 characters long"
  }
end

Public Instance Methods

validate() click to toggle source
# File lib/toolchain/validations/validators/length.rb, line 23
def validate
  errors.add(key_path, message || "is invalid") unless valid?
end

Private Instance Methods

valid?() click to toggle source
# File lib/toolchain/validations/validators/length.rb, line 29
def valid?
  val =
    if value.kind_of?(String) && value =~ /^\d+$/
      value.to_i
    elsif value.kind_of?(String) && value =~ /^\d+\.\d+$/
      value.to_f
    elsif value.kind_of?(String)
      value.length
    else
      value
    end

  if data[:between]
    return data[:between].include?(val)
  end

  if data[:greater_than] && data[:less_than]
    return val > data[:greater_than] && val < data[:less_than]
  end

  if data[:greater_than]
    return val > data[:greater_than]
  end

  if data[:less_than]
    return val < data[:less_than]
  end

  false
end