バリデートを条件によって使い分けるために、saveのcontext内で式展開をしたいと思います。
offer_shouninとhaitatsu_kiboubiという2つのカラムがあり、offer_shouninの値が「jitai」ならhaitatsu_kiboubiは空でも良いということを実現したいです。
rails
1validates :offer_shounin, presence: true, on: :step20 2validates :haitatsu_kiboubi, presence: true, on: :step21
rails
1def update 2 @package.assign_attributes(package_params) 3 if @package.offer_shounin == "jitai" 4 gate = ":step21" 5 else 6 gate = "[:step20,:step21]" 7 end 8 if @package.save(context: "#{gate}") 9 flash[:success] = "更新されました。" 10 redirect_to root_path 11 else 12 render "edit" 13 end 14 end
式展開を利用して、saveのcontextの内容を切り替えようと思ったのです、効果なくスルーされます(バリデートなしでupdateされる)。
式展開を使わず、
rails
1if @package.save(context: [:step20,:step21])
と書けばうまく動くので、私の式展開に関する知識不足かと思いますが、解決法があればお教え下さい。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/08/29 02:45