我正在尝试在Rails 4中制作一个应用程序。
我使用脚手架生成器使我的资源起点。
我注意到,当我在这个板上提问时,人们会评论我在控制器中的强参数定义的形式。
脚手架生成器以以下格式创建它们:
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脚手架生成器创建此方法的方式有什么问题吗?
require方法确保存在特定参数,如果没有提供,require方法会抛出错误。它为传递到require的密钥返回一个ActionController::Parameters
实例。
permit方法返回parameters对象的副本,只返回允许的键和值。
正如您所看到的,在使用scafffold的默认系统时,我们需要检查params
中是否有任何值,而需要在缺少值时抛出错误。