Ruby on Rails - ошибка скрепки

Для справки я следую этому руководству: https://devcenter.heroku.com/articles/paperclip-s3 За исключением того, что я сейчас тестирую локальное хостинг, поэтому я установил драгоценный камень Figaro и поместил мою информацию S3 в application.yml.

Использование Rails v4, Cocaine v0.5.3 и Paperclip v4.1.0 (не знаю, нужно ли упоминать другие номера версий gem).

У меня есть модель под названием SubmissionDetails, где в ее new.html.erb я пытаюсь загрузить jpg в столбец с именем attachment. Вот соответствующий код модели:

has_attached_file :attachment, styles: {
thumb: '200x200>',
large: '800x800>'
}

validates_attachment_content_type :attachment, content_type: /\Aimage\/.*\Z/

Когда я пытаюсь загрузить jpg, он возвращается к форме со следующим сообщением об ошибке:

1 error prohibited this submission_detail from being saved:
Attachment translation missing:
en.activerecord.errors.models.submission_detail.attributes.attachment.spoofed_media_type

Я понимаю часть ошибки, что текст для отображения этого сообщения об ошибке отсутствует в моем файле en.yml, но как насчет этой части поддельного типа носителя?

Это отображается на моей серверной консоли, не уверен, что это актуально:

[paperclip] Content Type Spoof: Filename header.jpg (["image/jpeg"]), content type discovered from file command: . See documentation to allow this combination.
(0.0ms)  rollback transaction

Ответы

Ответ 1

Это сообщение поднято проверкой проверки для подмены содержимого.

Для Paperclip v.4 это создает ошибку https://github.com/thoughtbot/paperclip/issues/1429

В то время как для Paperclip v.3 кажется, что он просто выдает предупреждение об отказе, https://github.com/thoughtbot/paperclip/issues/1423

Итак, я бы подождал, когда команда Paperclip решит эту ошибку, прежде чем использовать версию 4. На данный момент я предпочитаю использовать версию 3.

gem "paperclip", "~> 3.5.3"

Или добавьте это в инициализатор, чтобы отключить защиту от спуфинга:

конфиг/Инициализаторы/paperclip_media_type_spoof_detector_override.rb

require 'paperclip/media_type_spoof_detector'
module Paperclip
  class MediaTypeSpoofDetector
    def spoofed?
      false
    end
  end
end

см. Невозможно загрузить изображение, используя "Резервуары для копий 4"