2017-02-10 6 views
1

моей Post модели:
mount_uploaders :attachments, AttachmentUploaderRails Carrierwave: Как уменьшить размер вложений от 7-15Mb до 7Мб

У меня есть текущие цели:

  • Если вложение Фото и размер файла от 7 до 15 мб. Carrierwave должен уменьшить размер до мб.
  • Если вложение - это фото и размер файла больше 10 МБ, я должен выбросить ошибку.
  • Если вложение - это видео и размер файла превышает 200 МБ, я должен выбросить ошибку.

Пытался сделать это в News модели:

validate :file_size 

    def file_size 
    attachments.each do |attachment| 
     extn = attachment.content_type 
     size = attachment.size 
     if ["image/png", "image/jpg", "image/jpeg"].include?(extn) && size > 7.megabytes.to_f 
     errors.add(:attachment, "Max Photo size is 7MB") 
     elsif ["application/mp4", "application/mov"].include?(extn) && size > 200.megabytes.to_f 
     errors.add(:attachment, "Max video size is 200MB") 
     end 
    end 
end 

Что только подтверждает размер, но не уменьшить размер, если он превышает 7MB.

ответ

0

Ваш код генерирует только сообщение об ошибке, если размер составляет> 7 МБ. Возможно, вы захотите преобразовать файл в png или уменьшить качество изображения. Этим признакам присущи драгоценные камни. Нет такого метода, чтобы ограничить максимальный размер до 7 мб после преобразования. Возможно, вы захотите проверить файл_размер и, если он превышает 7mb, возможно, вам понадобится метод для уменьшения файла_файла.

Смежные вопросы