AR삽질러

Rails 一日一つメソッド (Day26) permitメソッド 본문

Ruby/RubyOnRails-日本語

Rails 一日一つメソッド (Day26) permitメソッド

아랑팡팡 2024. 2. 1. 18:34
728x90

 

Rails 一日一つメソッド (Day26) permitメソッド

 

permitメソッドとは?

 - paramsで取得したパラメータに対して保存の許可処理を行うメソッドで、requireメソッドは特定のパラメータが paramsハッシュの中にあるかを確認する時に使われる。指定したパラメータが存在しない場合、ActionController::ParameterMissing例外が発生する。

permitメソッドを使う時
User入力処理 WebのFormを通過して提出したデータを処理する時
Model生成、Update permitを使って特定のFiledだけをUpdateするようにしたい時
保安強化 permitを使って許可されたFiledだけを処理して悪意を持ってUserのデータ送信を防げる。
パラメーター検証 目的のパラメータ キーを許可し、他のパラメータはフィルタリングして、不正な入力またはパラメータ エラーからアプリケーションを保護する時
バリデーション Strong Parametersを使ってデータのバリデーション検査を行える。

 

params.permit(:キー名)

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

params.require(:user).permit(:name, :age)
=>{ name: "Arang", age: 20 }

 

permitメソッドの使い方

 - Controllerで使われる

def create
	user_params = params.require(:user).permit(:name, :email, :password)
    @user = User.new(user_params)
end

 - params.require(:user) : userパラメータを必須として要求。

 - permit(:name, :email, :password) : userパラメータで許可されているフィールドのみを選択的に許可する。

 

Strong Parameters

 - Userが入力したデータが許可されているのかを制御する機能で、どんなパラメータを使えばアプリケーションでどんなパラメーターが許可されるか、許可されないかを指定できる。

user_params = params.require(:user)

 

requireメソッド

 - paramsオブジェクトで特定のパラメーターを要求するメソッドで、パラメーターが要請にない場合、ActionController::ParameterMissing例外が発生する。

例)Userから :userパラメーターが必要な場合。

user_params = params.require(:user)

 

配列に対しての指定の仕方

 - Valueに複数の値の場合は、配列パラメーターに処理できる

params.permit(キー: [])

 

例):addressハッシュパラメータの中に、:street, :city キーがある場合

address_params = params.require(:user).permit(address: [:street, :ciry])

 

728x90
반응형
LIST