class FileContentTypeValidator

Public Instance Methods

validate_each(record, attribute, value) click to toggle source
# File lib/lite/validators/file_content_type_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_content_type_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
valid_attr?() click to toggle source
# File lib/lite/validators/file_content_type_validator.rb, line 19
def valid_attr?
  options.slice(:include, :exclude).each do |option, option_value|
    validate_check(option, option_value)
  end
end
valid_content_type?(option, option_value) click to toggle source

rubocop:disable Style/CaseEquality

# File lib/lite/validators/file_content_type_validator.rb, line 26
def valid_content_type?(option, option_value)
  check = Array(option_value).any? { |type| type === value.content_type }
  option == :exclude ? !check : check
end
validate_check(option, option_value) click to toggle source

rubocop:enable Style/CaseEquality

# File lib/lite/validators/file_content_type_validator.rb, line 32
def validate_check(option, option_value)
  return if valid_content_type?(option, option_value)

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