[解決済み】Rails 4でPaperclip::Errors::MissingRequiredValidatorErrorが発生する。
質問
railsのブログアプリでpaperclipを使ってアップロードしようとすると、こんなエラーが出ます。 MissingRequiredValidatorError"と表示されていますが、何を指しているのかよくわかりません。 作成も更新もpost_paramsを使うので、post_paramsを更新して:imageを与えれば大丈夫だと思ったのですが。
Paperclip::Errors::MissingRequiredValidatorError in PostsController#create
Paperclip::Errors::MissingRequiredValidatorError
Extracted source (around line #30):
def create
@post = Post.new(post_params)
これは私のposts_controller.rbです。
def update
@post = Post.find(params[:id])
if @post.update(post_params)
redirect_to action: :show, id: @post.id
else
render 'edit'
end
end
def new
@post = Post.new
end
def create
@post = Post.new(post_params)
if @post.save
redirect_to action: :show, id: @post.id
else
render 'new'
end
end
#...
private
def post_params
params.require(:post).permit(:title, :text, :image)
end
そして、これは私の投稿ヘルパーです。
module PostsHelper
def post_params
params.require(:post).permit(:title, :body, :tag_list, :image)
end
end
余分な資料を補足することがあれば、教えてください。
解決方法は?
で始まる
Paperclip version 4.0
すべての添付ファイルには
content_type バリデーション
,
ファイル名の検証
に、または
明示的に
は、どちらも持たないということを表明しています。
ペーパークリップの昇給
Paperclip::Errors::MissingRequiredValidatorError
のいずれかを行わないとエラーになります。
あなたの場合、以下のいずれかの行を
Post
モデルで使用されます。
の後に
指定
has_attached_file :image
オプション 1: コンテンツの種類を検証する
validates_attachment_content_type :image, :content_type => ["image/jpg", "image/jpeg", "image/png", "image/gif"]
-または別の方法
validates_attachment :image, content_type: { content_type: ["image/jpg", "image/jpeg", "image/png", "image/gif"] }
-または別の方法
を使用することです。 レジェックス を使用して、コンテンツタイプの検証を行います。
例えば すべての画像形式を検証するには、次のような正規表現を指定します。
オプション 2: ファイル名を検証する
validates_attachment_file_name :image, :matches => [/png\Z/, /jpe?g\Z/, /gif\Z/]
オプション3: バリデーションを行わない
もし、いくつかの
クレイジー
の理由(
有効
を追加することはできませんが、今すぐには思いつきません)。
content_type
の検証を行い、Content-Typesを詐称して、期待していないデータをサーバーに受信することを許可する場合は、次のように追加します。
do_not_validate_attachment_file_type :image
注
MIME タイプを要件に応じて
content_type
/
matches
のオプションは上記の通りです。
今、いくつかの画像のMIMEタイプをあげましたので、まずはそれをご覧ください。
参考にしてください。
参照先 ペーパークリップ セキュリティバリデーション もし、まだ確認が必要な場合は、こちらをご覧ください。)
また、こちらで説明されているなりすまし検証にも対応しなければならないかもしれません。 https://stackoverflow.com/a/23846121
関連
-
[解決済み] 新規ユーザー作成時に ActiveModel::ForbiddenAttributesError が発生する。
-
[解決済み] Ruby on Railsのランナー
-
[解決済み] 該当するルートがない [GET] "demo/hello"
-
[解決済み] erbでコメントを追加する最適な方法
-
[解決済み] Railsで `before_action` での `only:` はどのように機能するのですか?
-
[解決済み] RoRにおけるSpringサーバーの機能とは?
-
[解決済み] Ruby on Railsのマイグレーションでデータベースのカラムの名前を変更するにはどうすればよいですか?
-
[解決済み] Ruby on Railsで現在の絶対URLを取得するにはどうすればよいですか?
-
[解決済み] Rails 4で懸念事項を使用する方法
-
[解決済み】Railsの認証トークンを理解する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Rails。Ruby on Railsの移行でデータベースカラムの名前を変更するにはどうすればよいですか?
-
[解決済み] サーバーに接続できませんでした。そのようなファイルまたはディレクトリがありません (PG::ConnectionBad)
-
[解決済み] Railsサーバーがポートはすでに使用されていると言う、そのプロセスを殺すにはどうすればよいですか?
-
[解決済み] デバイスを使用する現在のユーザーメソッド
-
[解決済み] どなたか、collection_selectをわかりやすく説明していただけませんか?
-
[解決済み] DestroyとDeleteの違い
-
[解決済み] Ruby on Railsでsimple_formを使うさまざまな方法|何が違うの?
-
[解決済み] gemのアップデート後、"Asset was not declared to be precompiled in production "でテストが失敗する。
-
[解決済み] サーバーはRailsで既に稼働している
-
[解決済み] Railsコンソール:リロード!モデルファイルの変更が反映されない?考えられる理由は何でしょうか?