web-dev-qa-db-ja.com

herokuペーパークリップの奇妙なエラーペーパークリップ::エラー:: MissingRequiredValidatorError

Railsアプリをherokuにデプロイしました。ドメインを変更するまでは問題なく機能していましたが、ローカルでは問題なく機能し、次のエラーが発生し始めました:Paperclip::Errors::MissingRequiredValidatorError

s3 env変数はherokuに設定されており、このエラーが発生する理由がわかりません。助けていただければ幸いです。

編集:将来の参照のために、それはherokuとは何の関係もありませんでした、一度再バ​​ンドルすると、答えが示唆するように、ローカルで同じエラーをスローします。

23
Itai Sagi

バージョン4.0(2日前に公開)では、ペーパークリップにはファイル/ MIME検証が必要です。モデルに以下を追加するだけです。

validates_attachment_content_type :file_name, :content_type => %w(image/jpeg image/jpg image/png)

[〜#〜] important [〜#〜]:プロジェクトに合うようにfile_nameとコンテンツタイプを置き換えます。

おそらくペーパークリップをまだ更新していないため、ローカルで機能します。

52
sebvst

または、これを入れてすべて無視します

do_not_validate_attachment_file_type :image
2
Maysam Torabi

ペーパークリップ(バージョン4)はデフォルトで安全になりました。 mimeタイプまたはファイル名のいずれかを検証するか、検証を明示的にオフにする必要があります。

これは、コンテンツタイプのなりすましを防ぐためです。画像の代わりにphpファイルをアップロードすると、一般公開されます。

推奨される解決策は次のようになります。

validates_attachment_content_type :image, :content_type => /\Aimage/

ここのドキュメント: https://github.com/thoughtbot/Paperclip#security-validations

これはS3の問題だけではありません。

2
superluminary

これを試してください-

validates_attachment_content_type:file_name、:content_type => /\Aimage/.*\Z/

0
Chitra