4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【ストロングパラメーター】

Last updated at Posted at 2020-07-14

#ストロングパラメーターとは何か

ストロングパラメーター.png

コントローラーにアクションを定義する際に出てくるストロングパラメータとは何か解説していきます。

createアクションの実行内容の部分にcreate(tweet_params)と記述がありますがこの引数であるtweet_paramsはprivateメソッドの中に定義されています。

##privateメソッド
privateとはクラスの外から呼び出すことのできないメソッドのことです。
privateメソッドを使うことのメリットは以下の二点です

###1.classの外部から呼び出されると困るメソッドを隔離する
メソッドの中にはclassの外部から呼び出されるとエラーを起こすメソッドもあるため隔離しておくことでエラーを事前に防ぐことができる。

###2.コードの可読性を高める
privateとそうでない部分を明確に分離することでコードとしての可読性が上がる

このprivateメソッドの中に
tweet_paramsというメソッドが定義されており、処理の内容は以下のようになっています。

ストロング2.png

requireの引数にtweetモデルを取り、
permitの引数に:name :image :textを取っています。

この意味はフォームから送られてきたデータのうち、:name :image :textというpermit以下で指定したキーを持つパラメーターのみを受け取るように制限するということです。

###この指定したキーを持つパラメーターのみを受け取る仕組みのことをストロングパラメータといいます。

ストロングパラメータを指定しておくことによって仕様以外のパラメータが送信されてくることを防ぎ、意図しないデータの更新をされないようにすることができます。

例えば、他人のログインパスワードを更新するパラメータを送信すれば勝手に他人のパスワードを変更できてしまうため、
こういったことを防ぐためにストロングパラメータを使用する必要があります。

再度コードを見ていくと

ストロングパラメーター.png

createメソッドは引数にtweet_paramsを指定しているため、tweet_paramsメソッドを経由して新たなデータが作成、保存される。
そのためこの場合は新しいツイートは必ずpermitの引数に指定したストロングパラメータのみを持っているということになります。

4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?