Answers:
该params
控制器中的看起来像一个哈希,但实际上它的一个实例ActionController::Parameters
,它提供了多种方法,如require
和permit
。
该require
方法确保存在特定参数,如果未提供该参数,则该require
方法将引发错误。它返回ActionController::Parameters
传递给的密钥的实例require
。
该permit
方法返回参数对象的副本,仅返回允许的键和值。创建新的ActiveRecord模型时,仅将允许的属性传递到模型中。
看起来很像以前包含在ActiveRecord模型中的白名单,但是将其包含在控制器中更有意义。
true
对该permitted?
方法做出响应。默认情况下,ActionController::Parameters
该类的实例将返回false
“ permitted?
Responding true
to” (响应到),这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
。