在未经许可的参数栏

时间:2015-06-28 04:32:08

标签: ruby-on-rails ruby

我正在尝试在我的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”和其他不在蜂房中的参数是允许的?我该如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

不,这些额外的参数是不允许的 - 它们会被默默地丢弃。

您只在permit上调用params.require(:apiary),即params[:apiary],因此只有该哈希内的额外属性才会引发异常。

只要你进行params.require调用,那么提交的所有其他参数就会变得与此方法的返回值无关。您只处理params[:apiary]哈希中的数据,这将是返回的内容。