0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

ストロングパラメータ

Posted at

image.png
1:ストロングパラメーター
ストロングパラメーターを使用する理由は、意図しないデータベースの読み書きを防ぐためです。

仮に全てのパラメーターを受け取る仕様の場合、悪意のあるパラメーターによって第三者にデータを改竄されてしまうなど、セキュリティ上の欠陥を作り出してしまう恐れがあります。最悪の場合、ユーザーへ不利益を与えてしまう事態へと繋がる可能性もあります。

このような状況を回避するためには、ストロングパラメーターを使用して受け取るパラメーターを制限することが大切です。

ストロングパラメーターの定義には、requireメソッドと、permitメソッドを組み合わせて使用します。

2:requireリクワイアメソッド
送信されたパラメーターの情報を持つparamsが、使用できるメソッドです。
requireメソッドは、パラメーターからどの情報を取得するか、選択します。

ストロングパラメーターとして使用する場合は、主にモデル名を指定します。

【例】require
params.require(:モデル名) # 取得したい情報を指定する
params[:モデル名]としても同じ情報を取得できますが、requireメソッドを使うことで、意図しないパラメーターであった場合にエラーとして返すことができ、原因特定やユーザーにエラーを示すなどの対応ができます。

requireメソッドによって必要なパラメーターのほとんどを取得できますが、取得するパラメーターをより意図したものだけに制限するため、permitメソッドを使用して、カラムに保存したいデータのみに絞りましょう。

3:permitパーミットメソッド
requireメソッドと同様に、paramsが使用できるメソッドです。
permitメソッドを使用すると、取得したいキーを指定でき、指定したキーと値のセットのみを取得します。

【例】permit
params.require(:モデル名).permit(:キー名, :キー名) # 取得したいキーを指定する

4:記述例
 private
  def tweet_params
   params.require(:tweet).permit(:name, :image, :text)
  end

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?