参考までに、私はこのチュートリアルに従っています: https://devcenter.heroku.com/articles/Paperclip-s 現在ローカルホストテストを行っている場合を除いて、Figaro gemをインストールし、S3を配置しました。 application.ymlの情報。
Rails v4、Cocaine v0.5.3、およびPaperclip v4.1.0を使用します(他のgemバージョン番号を記載する必要があるかどうかは不明です)。
SubmissionDetailsというモデルがあり、そのnew.html.erbで、attachmentという列にjpgをアップロードしようとしています。関連するモデルコードは次のとおりです。
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
このメッセージは、コンテンツのなりすましの検証チェックによって発生します。
Paperclip v.4の場合、これによりバグが発生します https://github.com/thoughtbot/Paperclip/issues/1429
Paperclip v.3の場合、非推奨の警告がスローされるようです https://github.com/thoughtbot/Paperclip/issues/142
したがって、バージョン4を使用する前に、Paperclipチームがこのバグを解決するのを待ちます。現時点では、バージョン3を使い続けたいと思います。
gem "Paperclip", "~> 3.5.3"
または、これを初期化子に追加して、なりすまし保護を無効にします。
require 'Paperclip/media_type_spoof_detector'
module Paperclip
class MediaTypeSpoofDetector
def spoofed?
false
end
end
end
問題のコメントで最近説明されているように( https://github.com/thoughtbot/Paperclip/issues/1429#issuecomment-49821032 )、追加:
Paperclip.options[:command_path] = '/usr/bin'
config/initializers/Paperclip.rbにアクセスすると、問題が解決しました。
同じ問題で、初期化子を編集せずにモデルレベルで適用できる別の回避策を見つけました。
class PaperclipModel < ActiveRecord::Base
has_attached_file :attachment, { validate_media_type: false }
validates_attachment :attachment, {
# Tweak as desired
content_type: { content_type: ["text/csv", "text/plain", Paperclip::ContentTypeDetector::SENSIBLE_DEFAULT] }
}
end
基本的に、これはスキップしますmedia_type
およびcontent_type
PaperclipModel
添付ファイルでのなりすましエラーを回避するための検証。詳細については、 ここ を参照してください。