class FileSizeValidator

Constants

CHECKS

Public Instance Methods

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

Private Instance Methods

assert_valid_checks!() click to toggle source

rubocop:disable Layout/LineLength, Style/GuardClause

# File lib/lite/validators/file_size_validator.rb, line 24
def assert_valid_checks!
  if checks.empty?
    raise ArgumentError, "Missing atleast one check of #{CHECKS.keys.map(&:inspect).join(', ')} attribute for comparison."
  else
    assert_valid_option!(:checks, CHECKS.keys)
  end
end
checks() click to toggle source

rubocop:enable Layout/LineLength, Style/GuardClause

# File lib/lite/validators/file_size_validator.rb, line 33
def checks
  options.keys & CHECKS.keys
end
error_message_for(option, option_value) click to toggle source
# File lib/lite/validators/file_size_validator.rb, line 37
def error_message_for(option, option_value)
  options[:message] || I18n.t(
    "errors.messages.file_size.#{option}",
    **error_options(option_value)
  )
end
error_options(option_value) click to toggle source
# File lib/lite/validators/file_size_validator.rb, line 44
def error_options(option_value)
  if option_value.is_a?(Range)
    { min: option_value.min, max: option_value.max }
  else
    { count: option_value }
  end
end
valid_attr?() click to toggle source
# File lib/lite/validators/file_size_validator.rb, line 52
def valid_attr?
  options.slice(*CHECKS.keys).each do |option, option_value|
    validate_check(option, option_value)
  end
end
valid_size?(size, option, option_value) click to toggle source
# File lib/lite/validators/file_size_validator.rb, line 58
def valid_size?(size, option, option_value)
  return false if size.nil?

  if option_value.is_a?(Range)
    option_value.send(CHECKS[option], size)
  else
    size.send(CHECKS[option], option_value)
  end
end
validate_check(option, option_value) click to toggle source
# File lib/lite/validators/file_size_validator.rb, line 68
def validate_check(option, option_value)
  size = value.respond_to?(:byte_size) ? value.byte_size : value.size
  return if valid_size?(size, option, option_value)

  record.errors.add(attribute, error_message_for(option, option_value))
end