#ストロングパラメーターとは何か
コントローラーにアクションを定義する際に出てくるストロングパラメータとは何か解説していきます。
createアクションの実行内容の部分にcreate(tweet_params)と記述がありますがこの引数であるtweet_paramsはprivateメソッドの中に定義されています。
##privateメソッド
privateとはクラスの外から呼び出すことのできないメソッドのことです。
privateメソッドを使うことのメリットは以下の二点です
###1.classの外部から呼び出されると困るメソッドを隔離する
メソッドの中にはclassの外部から呼び出されるとエラーを起こすメソッドもあるため隔離しておくことでエラーを事前に防ぐことができる。
###2.コードの可読性を高める
privateとそうでない部分を明確に分離することでコードとしての可読性が上がる
このprivateメソッドの中に
tweet_paramsというメソッドが定義されており、処理の内容は以下のようになっています。
requireの引数にtweetモデルを取り、
permitの引数に:name :image :textを取っています。
この意味はフォームから送られてきたデータのうち、:name :image :textというpermit以下で指定したキーを持つパラメーターのみを受け取るように制限するということです。
###この指定したキーを持つパラメーターのみを受け取る仕組みのことをストロングパラメータといいます。
ストロングパラメータを指定しておくことによって仕様以外のパラメータが送信されてくることを防ぎ、意図しないデータの更新をされないようにすることができます。
例えば、他人のログインパスワードを更新するパラメータを送信すれば勝手に他人のパスワードを変更できてしまうため、
こういったことを防ぐためにストロングパラメータを使用する必要があります。
再度コードを見ていくと
createメソッドは引数にtweet_paramsを指定しているため、tweet_paramsメソッドを経由して新たなデータが作成、保存される。
そのためこの場合は新しいツイートは必ずpermitの引数に指定したストロングパラメータのみを持っているということになります。