Strong Parameterとは
Rails には、ストロングパラメーター(Strong Parameter)
という、ユーザーから送信されるデータを制限する機能があります。
この仕組みを使うことで、安全では無いデータの登録・更新を防いでくれます。
ストロングパラメータの書き方
- 基本構文
user_controller.rb
private
def user_params
params.require(:キー(モデル名)).permit(:カラム名1,:カラム名2,・・・).merge(カラム名: 入力データ)
end
user_controller.rb
class UsersController < ApplicationController
# (中略)
private
def user_params
params.require(:user).permit(:name, :email, :password,:password_confirmation)
end
end
***メソッド名には[ モデル名_params ]***とするのが一般的です。
reqireメソッドとparmitメソッド
基本的には、require と permit の使い方さえわかっておけば大丈夫です。
① require
: 受け取る値のキーを設定
② permit
: 許可するカラムを設定
上の場合はパラメーターの :userというキーの中の:name, :email,:password,:password_confirmationだけを許可する設定にしました。
つまりパラメーターとしての :name, :email, :password,:password_confirmation4つだけデータの作成・更新を許可する といった内容になっています。
ストロングパラメーターを使わずに、そのままユーザーから送られてきた値を使ってデータを作ったり、更新しようとすると、ユーザーに書き換えられたくない値まで書き換えられてしまうという問題が起きてしまいます。
他にもprivateメソッド
とmergeメソッド
もあります。
ストロングパラメータの呼び出し方
丸投げパターン
user_controller.rb
def create
User.create(user_params)
end
ストロングパラメータに全てお任せパターンです。」
資料