LoginSignup
0
1

More than 1 year has passed since last update.

ストロングパラメーター

Last updated at Posted at 2021-10-01

ストロングパラメーターとはデータベースが全てのパラメーターを受け取ることができる状態にしておくと、意図しないデーターベースの読み書きが起こってしまうことがありそれを防ぐためのもの。悪意あるパラメーターからによるデータの改竄などのセキュリティの欠陥を防ぎ、ユーザーを守ることにつながる。
ストロングパラメーターを使って保存するパラメーターに制限をかけることは重要。
ストロングパラメーターにはrequireメソッドとpermitメソッドがある。

requireメソッドは送信されたパラメーターを持つparamsが使用できるメソッド。

params.require(:対応したモデル名)

で定義できる。ストロングパラメーターとして使用する場合は主にモデル名を指定する。
これにより意図しないパラメーターをparamsが受け取った場合。エラーを返すことができ、原因特定のためにユーザーにエラーを示すことができる。
requireメソッドで必要なパラメーターを取得できるようになったが、さらにパラメーターを絞り込み、カラムに保存したい情報を指定することがpermitメソッドでできる。

permitメソッドはrequireメソッドと同じようにparamsが使用できるメソッド。

params.require(:対応したモデル名).permit(:取得したいキー名, :取得したいキー名)

で定義でき、例にあるように複数指定できる。
例えばTweetモデルで、name、image、text をデータベースで受け取りたい場合は、対応したコントローラーに

def create
  Tweet.create(tweet_params) ←ここでTweetモデルを通して新しくパラメータを保存したいという記述。
end

private
def tweet_params
  params.require(:tweet).permit(:name, :image, :text) ←受け取りたいパラメーターのキーを指定。
end

★privateメソッドは以下の記述がクラス外から呼び出されなくなるメソッド

0
1
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
1