Answers:
该params控制器中的看起来像一个哈希,但实际上它的一个实例ActionController::Parameters,它提供了多种方法,如require和permit。
该require方法确保存在特定参数,如果未提供该参数,则该require方法将引发错误。它返回ActionController::Parameters传递给的密钥的实例require。
该permit方法返回参数对象的副本,仅返回允许的键和值。创建新的ActiveRecord模型时,仅将允许的属性传递到模型中。
看起来很像以前包含在ActiveRecord模型中的白名单,但是将其包含在控制器中更有意义。
true对该permitted?方法做出响应。默认情况下,ActionController::Parameters该类的实例将返回false“ permitted?Responding trueto” (响应到),这permitted?意味着可以将对象用于批量分配;否则应用程序将抛出ForbiddenAttributes错误。
permit上require也是允许的,包括在返回的对象所需的参数?
更精确地说,当您创建例如。这样做.new(...),必须有:person哈希表示通过的要求和人的哈希只接受:name和:age被许可表示。
例:
.new(person: { name: "Bhojendra", age: 32 }) // okay
.new(person: { name: "Rauniyar" }) // okay
.new(person: { name: "Bhojendra", other: 'asdf' }) // not okay, other not permitted
.new(person: { full_name: "Bhojendra Rauniyar" }) // not okay, full_name not permitted
.new(detail: { name: "Bhojendra", age: 32 }) // not okay, must be person
not okay例子和第四个例子可以看到什么?
permit但没有解释require。