class ValidationProfiler::Rules::ListValidationRule

ListValidationRule class

Public Instance Methods

error_message(field, attributes = {}, parent = nil) click to toggle source
# File lib/validation_profiler/rules/list_validation_rule.rb, line 5
def error_message(field, attributes = {}, parent = nil)
  field_name = field.to_s
  field_name = "#{parent}.#{field}" unless parent.nil?

  if attributes[:message].nil?
    "#{field_name} is not an accepted value."
  else
    attributes[:message]
  end
end
validate(obj, field, attributes = {}, parent = nil) click to toggle source
# File lib/validation_profiler/rules/list_validation_rule.rb, line 16
def validate(obj, field, attributes = {}, parent = nil)
  field_value = get_field_value(obj, field)

  return true unless is_required?(field_value, attributes)
  return false if field_value.nil?

  list = attributes[:list]
  regex = attributes[:regex]

  raise_invalid_exception!(field) if regex.nil? && list.nil?

  if list
    raise_invalid_exception!(field) unless list.is_a?(Array)
    return false unless list.include?(field_value)
  elsif regex
    field_value.each do |value|
      return false unless value =~ regex
    end
  end

  true
end

Private Instance Methods

raise_invalid_exception!(field) click to toggle source
# File lib/validation_profiler/rules/list_validation_rule.rb, line 41
def raise_invalid_exception!(field)
  raise ValidationProfiler::Exceptions::InvalidValidationRuleAttributes
    .new(ValidationProfiler::Rules::ListValidationRule, field)
end