Ruby on rails Rails:.require()而实际上不需要它?

Ruby on rails Rails:.require()而实际上不需要它?,ruby-on-rails,parameters,ruby-on-rails-5,strong-parameters,actioncontroller,Ruby On Rails,Parameters,Ruby On Rails 5,Strong Parameters,Actioncontroller,我正在尝试使用 params.require(:subscriber).permit(:utm_source, :utm_medium, :utm_campaign, :utm_term, :utm_content) 问题是,我很少想做以下事情: Subscriber.new(订户参数) 我不在乎所有的值是否都是空的。。。当我这样做时,它会引发ActionController::ParameterMissing 因此,我需要的是一种使require()成为“可选”的方法,但仍然使用它来限制嵌套

我正在尝试使用

params.require(:subscriber).permit(:utm_source, :utm_medium, :utm_campaign, :utm_term, :utm_content)
问题是,我很少想做以下事情:

Subscriber.new(订户参数)

我不在乎所有的值是否都是空的。。。当我这样做时,它会引发
ActionController::ParameterMissing

因此,我需要的是一种使
require()
成为“可选”的方法,但仍然使用它来限制嵌套参数和安全性,因此人们不能添加
{admin:true}
之类的内容

实际的参数散列如下所示:

{订户:{utm_来源:1,…}


我无法更改该部分,因为它在应用程序的许多其他位置都有使用。它只是这一点。

您可以使用
获取
而不是
要求

params.fetch(:subscriber).permit(:utm_source, :utm_medium, :utm_campaign, :utm_term, :utm_content)

有关强参数的更多信息,请查看。

谢谢!什么是“标量”?我阅读了这些文档,但有几个不太懂bits@Tallboy标量可以描述为包含单个值的变量。例如,数字或字符串都是标量,而数组或哈希则不是。请查看更详细的答案。如果订阅ber可能为空,按如下方式执行:params.fetch(:subscriber,{}).permit(…)