Sha256: 146a89d7728dc1e111260cb89bade3d881b8cdd61167b13f1585e35cbd69af0c

Contents?: true

Size: 928 Bytes

Versions: 13

Compression:

Stored size: 928 Bytes

Contents

# frozen_string_literal: true

class FileExtensionValidator < BaseValidator

  def validate_each(record, attribute, value)
    assert_valid_include_or_exclude!
    assign_attr_readers(record, attribute, value)
    valid?
  end

  private

  def assert_valid_include_or_exclude!
    return if options.key?(:include) || options.key?(:exclude)

    raise ArgumentError, 'Missing ":include" or ":exclude" attribute for comparison.'
  end

  def check
    options.key?(:exclude) ? :exclude : :include
  end

  def include_or_exclude
    values = options[:include] || options[:exclude]
    Array(values)
  end

  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

end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
lite-validators-1.7.2 lib/lite/validators/file_extension_validator.rb
lite-validators-1.7.1 lib/lite/validators/file_extension_validator.rb
lite-validators-1.7.0 lib/lite/validators/file_extension_validator.rb
lite-validators-1.6.0 lib/lite/validators/file_extension_validator.rb
lite-validators-1.5.0 lib/lite/validators/file_extension_validator.rb
lite-validators-1.4.0 lib/lite/validators/file_extension_validator.rb
lite-validators-1.3.2 lib/lite/validators/file_extension_validator.rb
lite-validators-1.3.1 lib/lite/validators/file_extension_validator.rb
lite-validators-1.3.0 lib/lite/validators/file_extension_validator.rb
lite-validators-1.2.0 lib/lite/validators/file_extension_validator.rb
lite-validators-1.1.2 lib/lite/validators/file_extension_validator.rb
lite-validators-1.1.1 lib/lite/validators/file_extension_validator.rb
lite-validators-1.1.0 lib/lite/validators/file_extension_validator.rb