掲題の通りでヒィヒィ言ってる。
以下備忘録。
#1. ストロングパラメータって何だっけ
意図しないDBの読み書きを防ぐのがストロングパラメータ。createアクションを元にフォームなどから送られてきたパラメータをレコードに保存するときに、受け取るパラメータを制限するもの。
params.require(:モデル名).permit(:キー名, :キー名.....)
このように指定していく。例えば、modelというモデルでやりとりできるデータベースに{sample1:"hogehoge",sample2:"fugafuga"}というレコードがあるとして
params.require(:model)
#=> {sample1:"hogehoge",sample2:"fugafuga"}
params.require(:model).permit(:sample2)
#=> {sample2:"fugafuga"}
上記のようなことが起こる。params.requireの内容からキーを指定すると、指定したもの以外のキーは一切受け付けなくなる。
#2. なんで必要か
要するに、書き換えられたくないカラムを書き換えられないようにしなければならないために設定するもの。
Mass assignment 脆弱性がキーワードとなる。