Rails 4の強力なパラメータの例はすべてparams.require(:person).permit(:name, :age)
です。Rails 4で `params.require(:person).permit(:name、:age)`とは何ですか?
誰かが解体し、起こっていることをrequire
とpermit
とここで説明できますか?
ありがとうございます!
Rails 4の強力なパラメータの例はすべてparams.require(:person).permit(:name, :age)
です。Rails 4で `params.require(:person).permit(:name、:age)`とは何ですか?
誰かが解体し、起こっていることをrequire
とpermit
とここで説明できますか?
ありがとうございます!
コントローラー内のparams
はハッシュのように見えますが、実際はActionController::Parameters
のインスタンスで、require
とpermit
のようないくつかの方法があります。
require
メソッドは特定のパラメータが存在することを保証し、指定されていない場合はrequire
メソッドがエラーをスローします。 require
に渡されたキーに対してActionController::Parameters
のインスタンスを返します。
permit
メソッドは、パラメータオブジェクトのコピーを返し、許可されたキーと値のみを返します。新しいActiveRecordモデルを作成するときは、許可された属性のみがモデルに渡されます。
以前はActiveRecordモデルに含まれていたホワイトリストによく似ていますが、コントローラーに入るのがより理にかなっています。
permitの説明はビットオフです:permitは許可されたキーのみを含む別のハッシュを返します(これは重大です)が 'allowed? 'メソッドに対して' true'で応答します。デフォルトでは、 'ActionController :: Parameters'クラスのインスタンスは' permitted? 'に' false'を返します。 'true'は' permitted'に応答すると、一意の代入でパラメータオブジェクトを使うことができます。それ以外の場合、アプリケーションはForbiddenAttributesエラーをスローします。 – sameers
'require'で' permit'を連鎖させることで、返されたオブジェクトに必要なパラメータも許されていますか? – Dennis
この例は、 'permit'について説明していますが' require'については説明していないドキュメントから直接得られます。 –