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