目次
- form_withで送られたデータをデータベースに保存する際の注意点
- ストロングパラメータ
- ストロングパラメータの使い方
- 用語
form_withで送られたデータをデータベースに保存する際の注意点
⇨form_withで送られてくるデータは改竄が可能。
どういうことかというと 左 htmlの画面 右 デベロッパーツールの画面 例えばデベロッパーツールのtask[title]を⇨task[like]に変更して入力画面に文字を打つと データベースのtaskテーブルのtitleカラムに入る予定だった値がlikeカラムに入ったりしてデータが改竄される。
ストロングパラメータとは?
⇨改竄されないために特定の値しか入力させない仕組みを⇨ストロングパラメーターという。
ストロングパラメータの使い方
①コントローラにprivateと記載 ②privateの下にモデル名_paramsというメソッドを定義 ③そのメソッド内でparams.require(:モデル名).permit(:キー名)と記載
↓こんな感じ
用語
①privateとは? 呼び出すとそれ以降に定義されるインスタンスメソッドはそのクラス中でしか呼び出されなくなります。privateメソッドを使っておけばクラス外部で呼び出されるとエラーが起きるようなメソッドが使われるのを防ぐことができる。=外部からの操作を受け付けなくする。
require(モデル名) テーブルを指定する
permitメソッド paramsで取得したキーのうち、データベースに保存してもいいものを許可するメソッドです。 permit(:キー名)←このキーしか受け付けないよって意味
paramsとはフォームなどによって送られてきた情報(パラメーター)を取得するメソッドです。