我正在尝试在Rails 4中创建一个应用程序。
我使用脚手架生成器来创建我的资源起点。
当我在这个问题上提问时,我注意到人们会在控制器中对我强大的params定义的形式发表评论。
脚手架生成器以这种格式创建它们:
def industry_params
params[:industry].permit(:sector, :icon)
end
大多数显示如何将强参数列入白名单的资源显示此格式。
def industry_params
params.require(:industry).permit(:sector, :icon)
end
http://edgeapi.rubyonrails.org/classes/ActionController/StrongParameters.html
rails scaffold生成器创建此方法的方式有什么问题吗?
答案 0 :(得分:1)
require 方法确保存在特定参数,如果未提供,则require方法会引发错误。它为传递给require的密钥返回ActionController::Parameters
的实例。
permit 方法返回参数对象的副本,仅返回允许的键和值。
正如您在使用scafffold的默认系统时所看到的,我们需要检查params
中是否有任何值,而需要如果缺少则会抛出错误。