1.ストロングパラメーターとは
- パラメーターを受け取る際に指定したキーをもつパラメータを受けとるように制限をかけるものです
- 制限がないと登録されるべきではない、カラムのデータが送られてきた場合に、そのデータが保存されてしまいます
2.基本の記述
○○○_controller.rb
private
def message_params
params.require(:モデル名).permit(:保存させたいカラム名).merge(カラム名: 追加したいデータ値)
end
2−1.require(:モデル名) メソッド
- モデル名の部分には、今回送られてきたデータはどこのテーブルに保存したいのかを記載します。
2−2.permit(:カラム名) メソッド
- カラム名の部分には、今回送られてきたデータはどのカラムに保存したいのかを記載します。
-
permit(:カラム名1, :カラム名2)
のように複数カラムを指定することも可能です。
2−3..merge(カラム名: 追加したいデータ値) メソッド
- ユーザーから受け取ったデータにはないけれど、追加したい値はmergeメソッドで追加できます。
- 例えば旅行先を投稿する機能があったとして、新規投稿する際に、ユーザーから送られる情報は、
locationとtitle
のみだったとします。
この場合、どのユーザーが投稿するかの情報は送られてきていません。
そこで、こちら側でログイン情報からuser_id
をとってきて登録しておきます。
最後に
かなり簡潔にまとめると
require
(テーブルを指定)
どのテーブルの値をうけとりたいのか
permit
(カラムの指定)
受け取りたい値の指定をしておく
merge
(指定したテーブルにはないカラムを指定)
requireで指定したテーブルにはない値を指定したい
となります。