Rails: .require() 没有真正需要它?

Rails: .require() without actually requiring it?

我正在尝试使用...

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

问题是很少有我想做的事情:

Subscriber.new(subscriber_params)

而且我不在乎所有值是否为空...当我这样做时它会引发 ActionController::ParameterMissing

所以我需要一种方法来制作 require() "optional" 但仍然使用它来限制嵌套参数和安全性,所以人们不能添加 {admin: true} 诸如此类...

实际的参数散列看起来像:

{subscriber: {utm_source: 1, ...}

我无法更改该部分,因为它在应用程序的许多其他地方使用。就这一个地方。

您可以使用 fetch 而不是 require:

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

查看 rails guides 了解有关 强参数 的更多信息。