class BaseValidator

Attributes

attribute[R]
record[R]
value[R]

Public Instance Methods

validate_each(record, attribute, value) click to toggle source
# File lib/lite/validators/base_validator.rb, line 5
def validate_each(record, attribute, value)
  assign_attr_readers(record, attribute, value)
  return if valid?

  record.errors.add(attribute, *error_message)
end

Private Instance Methods

assert_valid_option!(name, collection, option: nil) click to toggle source

rubocop:disable Layout/LineLength

# File lib/lite/validators/base_validator.rb, line 23
def assert_valid_option!(name, collection, option: nil)
  option ||= send(name)

  Array(option).each do |option_value|
    next if collection.include?(option_value)

    raise ArgumentError, "Unknown #{name}: #{option_value.inspect}. Valid options are: #{collection.map(&:inspect).join(', ')}"
  end
end
assign_attr_readers(record, attribute, value) click to toggle source
# File lib/lite/validators/base_validator.rb, line 16
def assign_attr_readers(record, attribute, value)
  @record = record
  @attribute = attribute
  @value = value
end
error_message() click to toggle source

rubocop:enable Layout/LineLength

# File lib/lite/validators/base_validator.rb, line 34
def error_message
  [options[:message] || :invalid]
end
valid?() click to toggle source
# File lib/lite/validators/base_validator.rb, line 38
def valid?
  valid_length? && valid_attr?
end
valid_attr?() click to toggle source
# File lib/lite/validators/base_validator.rb, line 42
def valid_attr?
  valid_regexp?
end
valid_length?() click to toggle source
# File lib/lite/validators/base_validator.rb, line 46
def valid_length?
  !value.to_s.strip.empty?
end
valid_regexp?() click to toggle source
# File lib/lite/validators/base_validator.rb, line 50
def valid_regexp?
  value.to_s =~ self.class::REGEXP
end