Railsアプリをherokuにデプロイしました。ドメインを変更するまでは問題なく機能していましたが、ローカルでは問題なく機能し、次のエラーが発生し始めました:Paperclip::Errors::MissingRequiredValidatorError
。
s3 env変数はherokuに設定されており、このエラーが発生する理由がわかりません。助けていただければ幸いです。
編集:将来の参照のために、それはherokuとは何の関係もありませんでした、一度再バンドルすると、答えが示唆するように、ローカルで同じエラーをスローします。
バージョン4.0(2日前に公開)では、ペーパークリップにはファイル/ MIME検証が必要です。モデルに以下を追加するだけです。
validates_attachment_content_type :file_name, :content_type => %w(image/jpeg image/jpg image/png)
[〜#〜] important [〜#〜]:プロジェクトに合うようにfile_nameとコンテンツタイプを置き換えます。
おそらくペーパークリップをまだ更新していないため、ローカルで機能します。
または、これを入れてすべて無視します
do_not_validate_attachment_file_type :image
ペーパークリップ(バージョン4)はデフォルトで安全になりました。 mimeタイプまたはファイル名のいずれかを検証するか、検証を明示的にオフにする必要があります。
これは、コンテンツタイプのなりすましを防ぐためです。画像の代わりにphpファイルをアップロードすると、一般公開されます。
推奨される解決策は次のようになります。
validates_attachment_content_type :image, :content_type => /\Aimage/
ここのドキュメント: https://github.com/thoughtbot/Paperclip#security-validations
注これはS3の問題だけではありません。
これを試してください-
validates_attachment_content_type:file_name、:content_type => /\Aimage/.*\Z/