Rails 4ドキュメントの強力なパラメーターのすべての例で使用
params.require(:person).permit(:name, :age)
誰かがここでrequire
とpermit
で何が起こっているのか解体して説明してもらえますか?
コントローラーのparams
はハッシュのように見えますが、実際には ActionController::Parameters
のインスタンスであり、require
やpermit
などのいくつかのメソッドを提供します。
require
メソッドは、特定のパラメーターが存在することを保証し、指定されていない場合、require
メソッドはエラーをスローします。 require
に渡されたキーのActionController::Parameters
のインスタンスを返します。
permit
メソッドは、パラメータオブジェクトのコピーを返し、許可されたキーと値のみを返します。新しいActiveRecordモデルを作成すると、許可された属性のみがモデルに渡されます。
これは、以前ActiveRecordモデルに含まれていたホワイトリストによく似ていますが、コントローラーに含める方が理にかなっています。
より正確に言うと、例えば.new(...)
を実行する場合、requireで示される:person
ハッシュが必要であり、personハッシュは許可で示される:name
および:age
のみを受け入れます。
例:
.new(person: { name: "Bhojendra", age: 32 }) // okay
.new(person: { name: "Rauniyar" }) // okay
.new(person: { name: "Bhojendra", other: 'asdf' }) // not okay
.new(person: { full_name: "Bhojendra Rauniyar" }) // not okay
.new(detail: { name: "Bhojendra", age: 32 }) // not okay, must be person