Class: ValidationProfiler::Rules::ListValidationRule

Inherits:
ValidationRule show all
Defined in:
lib/validation_profiler/rules/list_validation_rule.rb

Overview

ListValidationRule class

Instance Method Summary collapse

Methods inherited from ValidationRule

#get_field_value, #is_required?

Instance Method Details

#error_message(field, attributes = {}, parent = nil) ⇒ Object



5
6
7
8
9
10
11
12
13
14
# 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) ⇒ Object



16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# 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