対象者
- ストロングパラメーターに関して知りたい方
- ストロングパラメーターの入力方法を知りたい方
目的
- ストロングパラメーターのメソッド1つ1つの意味を考えながら使うこと
実際の手順と実例
1.ストロングパラメーターって??
結論から言うと、ストロングパラメーターとは、データ送信時に不正なリクエストによって予期しない値に変更されてしまう脆弱性(マスアサインメント脆弱性)を防ぐ仕組みです。
私個人的に不正アクセスを防ぐ仕組みくらいに考えています。
2.書き方
1.基本構文
private
def user_params
params.require(:キー(モデル名)).permit(:カラム名1,:カラム名2,・・・).marge(カラム名: 入力データ)
end
以下は例になります
def edit
@user = User.find(params[:id])
end
def update
@user = User.find(params[:id])
if @user.update(user_params)
redirect_to user_path(@user), notice: "You have updated user successfully."
else
render "edit"
end
end
private
def user_params
params.require(:user).permit(:name, :introduction, :profile_image)
end
2.private
privateは一種の境界線のようなもので、
「ここから下はControllerの中でしか呼び出せません」という意味を持ちます。
3.requireメソッド
引数にしたいキーを指定する場所
例では,(:user)に当たります。
キーの値に対するデータを抽出したい場合上記例のように書きます。
4.permitメソッド
許可された値のみを取得することができます。
permitに記載のないカラムは、保存や更新が実行されません。
5.ストロングパラメーターの呼び出し
def update
@user = User.find(params[:id])
if @user.update(user_params)
redirect_to user_path(@user), notice: "You have updated user successfully."
else
render "edit"
end
end
上記例のUpdateアクション抜粋です。
if文の(user_params)の部分でストロングパラメーターを呼び出しています。この他にもcreate,new等でこのように記述する場合が多いです。
参照
投稿者コメント
先日ストロングパラメーターに記載がないことが理由で作業が前に進まなかったので、このように記事にして改めて認識をまとめてみることにしました。
構文こぴぺして使っていただけると嬉しいです。
My Profile
プログラミング学習歴3ヶ月目のアカウントです!
プログラミングスクールで学んだ内容や自分が躓いた箇所等のアウトプットの為に発信しています。
また、プログラミング初学者の方にわかりやすく、簡潔にまとめて情報共有できればと考えています。
もし、投稿した記事の中に誤り等ございましたら、コメント欄でご教授いただけると幸いです。