我正在尝试在我的RoR后端发布未经许可的参数时实现引发错误。我包括
config.action_controller.action_on_unpermitted_parameters = :raise
在我的development.rb配置中。现在,例如我在我的一个控制器中:
def apiary_params
params.require(:apiary).permit(:name, :municipality, :prefecture, :latitude, :longitude, :numberofbeehives, :notes)
end
如果我现在尝试发布另一个参数,请说“apiary [asdf]”,然后正确引发内部服务器错误。但是,如果我尝试在apiary哈希中发布一个随机的“asdf”参数,那么处理请求时不会出错。这是否意味着随机的“asdf”和其他不在蜂房中的参数是允许的?我该如何解决这个问题?
答案 0 :(得分:2)
不,这些额外的参数是不允许的 - 它们会被默默地丢弃。
您只在permit
上调用params.require(:apiary)
,即params[:apiary]
,因此只有该哈希内的额外属性才会引发异常。
只要你进行params.require
调用,那么提交的所有其他参数就会变得与此方法的返回值无关。您只处理params[:apiary]
哈希中的数据,这将是返回的内容。