前提・実現したいこと
rails 6.0.0 ruby 2.6.5
モデルで設定しているpresence: trueがupdateで効かない。
該当のソースコード
model
1class Post < ApplicationRecord 2 has_one_attached :image 3 4 with_options presence: true do 5 validates :text 6 validates :image 7 end 8end
controller
1class PostsController < ApplicationController 2 before_action :set_post, only: [:show, :destroy, :edit, :update] 3 4 ~~~省略~~~ 5 6 def edit 7 end 8 9 def update 10 if @post.valid? 11 @post.update(post_params) 12 flash[:notice] = "編集が完了しました" 13 redirect_to post_path(@post.id) 14 else 15 flash.now[:alert] = "編集に失敗しました" 16 render :edit 17 end 18 end 19 20 private 21 22 def post_params 23 params.require(:post).permit(:text, :image) 24 end 25 26 def set_post 27 @post = Post.find(params[:id]) 28 end 29end
試したこと
createアクションのsaveメソッドでも効いていない可能性があったので確認したが、空では登録できなくなっていてバリデーションが効いていた。
updateアクションでbinding.pryを実行して、paramsの中身を見たが空になっているのに@post.valid? => true
になっていた。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。