class RelationLengthValidator

Public Instance Methods

validate_each(record, attribute, value) click to toggle source
# File lib/rails/relation_length_validator.rb, line 2
def validate_each(record, attribute, value)
  if smaller?(value)
    record.errors.add(attribute, smaller_error_message, options)
  elsif greater?(value)
    record.errors.add(attribute, greater_error_message, options)
  end
end

Private Instance Methods

greater?(value) click to toggle source
# File lib/rails/relation_length_validator.rb, line 24
def greater?(value)
  value.length > minimum
end
greater_error_message() click to toggle source
# File lib/rails/relation_length_validator.rb, line 37
def greater_error_message
  message = options[:message] && options[:message][:maximum]
  message || ::I18n.t(
    "activerecord.errors.relation_length_is_greater",
    maximum: maximum,
    default: "must have at most #{ maximum } elements"
  )
end
maximum() click to toggle source
# File lib/rails/relation_length_validator.rb, line 16
def maximum
  options[:maximum] || Float::INFINITY
end
minimum() click to toggle source
# File lib/rails/relation_length_validator.rb, line 12
def minimum
  options[:minimum] || 0
end
smaller?(value) click to toggle source
# File lib/rails/relation_length_validator.rb, line 20
def smaller?(value)
  value.length < minimum
end
smaller_error_message() click to toggle source
# File lib/rails/relation_length_validator.rb, line 28
def smaller_error_message
  message = options[:message] && options[:message][:minimum]
  message || ::I18n.t(
    "activerecord.errors.relation_length_is_smaller",
    minimum: minimum,
    default: "must have at least #{ minimum } elements"
  )
end