Ruby on rails 强参数:发送的参数不在允许列表中时显示错误(正在开发中)

Ruby on rails 强参数:发送的参数不在允许列表中时显示错误(正在开发中),ruby-on-rails,strong-parameters,Ruby On Rails,Strong Parameters,当发送的参数不在允许列表中(正在开发中)时,是否有方法显示错误 我经常忘记将参数添加到列表中,并且一开始就没有注意到它。我认为StrongParameters还没有做到这一点,但您可以自己做。例如: def object_params permitted_params = [:a, :b, :c] params.require(:some_object_name).permit(*permitted_params) if Rails.env.development? &&am

当发送的参数不在允许列表中(正在开发中)时,是否有方法显示错误


我经常忘记将参数添加到列表中,并且一开始就没有注意到它。

我认为StrongParameters还没有做到这一点,但您可以自己做。例如:

def object_params
  permitted_params = [:a, :b, :c]
  params.require(:some_object_name).permit(*permitted_params)
  if Rails.env.development? && permitted_params.exclude?(some_param)
    # TODO: Raise an exception or log an error or whatever you want to do here.
  end
end
更新


我发现强_参数gem(默认情况下包含在Rails 4中)在这里提供了一些灵活性!请参阅自述文件的此部分:。所以,在开发环境中,应该已经记录了未经许可的密钥。如果你愿意的话,你可以改成加薪。酷!如果这不是你想要的,而且上面的代码也不是,那么你可能可以使用monkey patch或fork gem在整个应用程序中对未经许可的密钥执行一些特殊操作。

这是相当模糊的。至少,你应该让我们知道你在说什么编程语言。可能还提供一两个例子……对不起,我想选择StrongParameters标签会让我很明显我说的是RubyonRails。我现在把它作为标签加上去了。我不知道我是否明白你的意思。我希望有一种机制,防止我发送不在白名单中的参数。所以,如果我添加一个新属性,然后添加一个表单输入并发送它,那么屏幕上就会出现一个警告。通常情况下,验证会确保表单中正确填写了所有必需的属性。因此,如果您没有向允许的参数列表添加属性并提交表单,那么表单提交将抱怨没有为该属性输入任何内容(因为如果该属性未在允许的属性列表中列出,则不会在对象中设置该属性)。这有帮助吗?或者,如果您不需要验证,那么您可以使用我上面的代码示例想出一种不同的显示错误的方法——可能通过设置
flash[:error]
,然后,如果存在flash错误,则跳过表单验证或任何您想做的事情,以确保表单提交失败。