Sha256: 6b8c64baaca5956bc9d1239f028a13fafe9d740e44c6dc5840b8aa07e410773f

Contents?: true

Size: 706 Bytes

Versions: 9

Compression:

Stored size: 706 Bytes

Contents

#
# Custom validator for file sizes
#
# @example
#
#   -> validates :image, size: { less_than: 2.megabytes }
#   -> validates :image, size: { less_than: 2.megabytes, message: 'is too large, please upload a file smaller than 2MB' }
#
class SizeValidator < ActiveModel::EachValidator
  def validate_each(record, attribute, value)
    return unless value.present? && value.attached?

    options = instance_values["options"]

    max_size = options.try(:[], :less_than) || 2.megabytes
    message = options.try(:[], :message) || "is too large, please upload a file smaller than #{max_size / 1.megabyte}MB"

    if value.blob.byte_size > max_size
      record.errors.add(attribute, message)
    end

  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
effective_resources-2.9.1 app/validators/size_validator.rb
effective_resources-2.9.0 app/validators/size_validator.rb
effective_resources-2.8.9 app/validators/size_validator.rb
effective_resources-2.8.8 app/validators/size_validator.rb
effective_resources-2.8.7 app/validators/size_validator.rb
effective_resources-2.8.6 app/validators/size_validator.rb
effective_resources-2.8.5 app/validators/size_validator.rb
effective_resources-2.8.4 app/validators/size_validator.rb
effective_resources-2.8.3 app/validators/size_validator.rb