こんにちは、おーしまです。
今日は「ストロングパラメータ」についてです。
ストロングパラメータとは、指定したキーを持つパラメータのみを受け取るよう制限したものです。
つまり、名前と電話番号のデータを変更したい時に、合わせて住所のデータも送ると、住所のデータまで変更されてしまうので、名前キーと電話番号キーだけを受け取るようにする設定のことです。
このストロングパラメータを使用しなかったら、他人のパスワードのデータを送られるとパスワードの内容まで変わってしまうという事が起きてしまうのです。恐ろしい。
ストロングパラメータは require と permit を使います。
params.require(:モデル名).permit(:キー名 :キー名)
で設定できます。
params.require( :ユーザー).permit( :名前 :電話番号 ) 的な?
これで、ユーザーの名前と電話番号のデータだけ取り出して保存できます。
requireの後は、モデル名だけでなくキー名でも良いです。
しかし、より細かく制限をかけるため require でモデルを制限し、 permit でキーを制限しています。
また、このストロングパラメータはプライベートメソッドに記述して呼び出すのが良いでしょう。
プライベートメソッドには、クラス外から呼ばれるとエラーを起こすメソッドを隔離したり、繰り返し使用するメソッドを記述しておけて、コードをシンプルにできるなどの利点があります。