LoginSignup
0
0

More than 3 years have passed since last update.

[Ruby on Rails]  ストロングパラメータの使い方について

Last updated at Posted at 2021-02-07

地味にめちゃくちゃ大事なストロングパラメータについて自身の備忘録として書いて行きたいと思います。

ストロングパラメータとは一体何?

指定したキーを持つパラメーターのみを受け取るように制限するものです。

ストロングパラメータを使用する理由は、
受け取る パラメーター を制限しなければ、仕様以外のパラメーターも使われてしまうためです。
この状態だと、意図しないデータの更新をされる可能性が発生します。

  

ストロングパラメータの定義には
requireメソッドと、permitメソッドを組み合わせて使用します。

requireメソッド

送信されたパラメーターの情報を持つparamsが、使用できるメソッドです。
requireメソッドは、パラメーターからどの情報を取得するか、選択します。
ストロングパラメータとして使用する場合は、主にモデル名を指定します。

params.require(:モデル名)

* 取得したい情報を指定する
* 基本はモデル名でそれ以外のキーも使うことが可能らしいです。

permitメソッド

requireメソッドと同様に、paramsが使用できるメソッドです。
permitメソッドを使用すると、取得したいキーを指定でき、指定したキーと値のセットのみを取得します。

params.require(:モデル名).permit(:キー名, :キー名)

*取得したいキーを指定する
permitメソッドでparams.requireの内容からキーを指定すると、それ以外のキーがあっても値を受け付けません。
  

実際にやってみたいと思います。

【例】

まずはcreateコントローラー内に
item_paramsを定義してあげます。

スクリーンショット 2021-02-08 0.14.19.png

こちらがparamsの中身だとして、
スクリーンショット 2021-02-08 0.36.39.png

実際に入力して見ると
スクリーンショット 2021-02-07 23.57.35.png

こんな感じに代入できます。
paramsの中身はターミナルbinding.pryで確認可能です。
  
 

ストロングパラメータを使う際には、プライベートメソッドを使います。

privateメソッド

これは簡単に説明すると、クラス外から呼び出すことが不可になるメソッドです。
  
こちらでストロングパラメータの完成です。
これで特定のキーを受け取ることができるようになりました。
スクリーンショット 2021-02-08 0.20.37.png

  
自分はまだまだ駆け出しエンジニアなので、間違った記述等ありましたら、ご指摘、ご教示のほどよろしくお願い致します。

0
0
1

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
0
0