class FileExtensionValidator

Public Instance Methods

validate_each(record, attribute, value) click to toggle source
# File lib/lite/validators/file_extension_validator.rb, line 5
def validate_each(record, attribute, value)
  assert_valid_include_or_exclude!
  assign_attr_readers(record, attribute, value)
  valid?
end

Private Instance Methods

assert_valid_include_or_exclude!() click to toggle source
# File lib/lite/validators/file_extension_validator.rb, line 13
def assert_valid_include_or_exclude!
  return if options.key?(:include) || options.key?(:exclude)

  raise ArgumentError, 'Missing ":include" or ":exclude" attribute for comparison.'
end
check() click to toggle source
# File lib/lite/validators/file_extension_validator.rb, line 19
def check
  options.key?(:exclude) ? :exclude : :include
end
include_or_exclude() click to toggle source
# File lib/lite/validators/file_extension_validator.rb, line 23
def include_or_exclude
  values = options[:include] || options[:exclude]
  Array(values)
end
valid_attr?() click to toggle source
# File lib/lite/validators/file_extension_validator.rb, line 28
def valid_attr?
  extension = File.extname(value.original_filename).tr('.', '')
  return false if extension.empty?

  included = include_or_exclude.any? { |ext| ext.to_s == extension }
  included = !included if check == :exclude
  return if included

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