Sha256: 6e2273676778ab72b6d4712481f6e1401e2f7b5649be6de84b59bb17b7f13b7a
Contents?: true
Size: 990 Bytes
Versions: 14
Compression:
Stored size: 990 Bytes
Contents
# frozen_string_literal: true class FileContentTypeValidator < 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 valid_attr? options.slice(:include, :exclude).each do |option, option_value| validate_check(option, option_value) end end # rubocop:disable Style/CaseEquality def valid_content_type?(option, option_value) check = Array(option_value).any? { |type| type === value.content_type } option == :exclude ? !check : check end # rubocop:enable Style/CaseEquality def validate_check(option, option_value) return if valid_content_type?(option, option_value) record.errors.add(attribute, *error_message) end end
Version data entries
14 entries across 14 versions & 1 rubygems