ruby on railsで開発している際に疑問に思ったので質問させていただきます。
railsのstrong parameterではオブジェクトの属性がviewからparamsとして飛んでくることを想定しているとおもいます。
例えば、shopというオブジェクトがあり、placeとnameとpriceというカラムがあるとします。
ruby
1def shop_params 2 params.require(:shop).permit(:name) 3end
とあれば、Shopというオブジェクトはnameというカラム属性を持っていることをコントローラーは想定していると思います。さらに、placeとpriceの情報も渡したいと思いますが、何かしらの事情(例えば外部APIでshopをとってきてその属性名が異なった時など)でplaceやpriceという名前でパラメータをviewから渡せない場合、別名で飛んできたparamsを割り当てるという作業が必要になるかと思います。すなわち、、、
ruby
1def create 2 Shop.new(shop_params.merge( 3 place: params[:shop][:address], 4 price: params[:shop][:budget] 5 )) 6#以下省略 7end
として、割り当てが可能かと思いますが、
この時mergeされたplaceとpriceはstrong parameterでpermitされるのでしょうか?
仮にされないとしたら、このような場合にpermitする方法がなんなのでしょうか?
調べたところ、ホワイトリスト化されるという記事があったのですが、本当かどうかがわからなかったため。。
何卒よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/10/11 13:41