Вопрос

В нашем последнем приложении нам нужно обработать некоторые загрузки, я работал с PaperClip раньше, и все работает! Но мы даем Carrierwave Попробуй, это выглядит многообещающе, но я не могу найти Как проверить размер привязанности, кажется, что документация Нет информации об этом, должны ли мы добавить ее вручную в модель через пользовательский валидатор?

Заранее спасибо!

Это было полезно?

Решение

Другие советы

Я сделал активную модель Файловые валидаторы GEM, который проверяет тип контента и проверку размера файла для CarrierWave, PaperClip, Drangonfly, Refil (надеюсь, он будет работать с другими решениями для загрузки). Он обнаруживает тип контента на основе содержимого файла и имеет детектор Spoof Type Media. Это работает как до, так и после загрузки.

С 1.0 Версия CarrierWave имеет встроенную проверку размера файла.

Установите последний carrierwave жемчужина

gem 'carrierwave', '~> 1.0'

Добавить метод size_range обеспечить мин размер и максимальный размер

class ImageUploader < CarrierWave::Uploader::Base
  def size_range
    0..2.megabytes
  end

В модели добавить validates_integrity_of Для действий размера файла (и типа контента) изображения.

class Image < ApplicationRecord
  mount_uploader :image, ImageUploader

  validates_integrity_of :image

Вот решение То, что я придумал - хитрость заключалась в том, что я не мог проверить размер файла напрямую, так как это сделало бомбу Fog Rubygem, если файл не был загружен. Я ожидаю, что будет более чистый способ спросить CarrierWave, был ли загружен файл.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top