Sha256: e371f2a671d3d3f237b467530bc936f996afa813b59540002cd00c82a1812c58

Contents?: true

Size: 853 Bytes

Versions: 91

Compression:

Stored size: 853 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"

    blobs = value.try(:blobs) || value.try(:blob) || raise('unable to find blobs')

    Array(blobs).each do |blob|
      if blob.byte_size > max_size
        record.errors.add(attribute, message)
        break
      end
    end

    true
  end
end

Version data entries

91 entries across 91 versions & 1 rubygems

Version Path
effective_resources-2.27.9 app/validators/size_validator.rb
effective_resources-2.27.8 app/validators/size_validator.rb
effective_resources-2.27.7 app/validators/size_validator.rb
effective_resources-2.27.6 app/validators/size_validator.rb
effective_resources-2.27.5 app/validators/size_validator.rb
effective_resources-2.27.4 app/validators/size_validator.rb
effective_resources-2.27.3 app/validators/size_validator.rb
effective_resources-2.27.2 app/validators/size_validator.rb
effective_resources-2.27.1 app/validators/size_validator.rb
effective_resources-2.27.0 app/validators/size_validator.rb
effective_resources-2.26.5 app/validators/size_validator.rb
effective_resources-2.26.4 app/validators/size_validator.rb
effective_resources-2.26.3 app/validators/size_validator.rb
effective_resources-2.26.2 app/validators/size_validator.rb
effective_resources-2.26.1 app/validators/size_validator.rb
effective_resources-2.26.0 app/validators/size_validator.rb
effective_resources-2.25.16 app/validators/size_validator.rb
effective_resources-2.25.15 app/validators/size_validator.rb
effective_resources-2.25.14 app/validators/size_validator.rb
effective_resources-2.25.13 app/validators/size_validator.rb