Rails:.require()没有实际需要它?

时间:2017-07-02 01:14:24

标签: 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(subscriber_params)

如果所有值都为空,我都不在乎......当我这样做时它会引发ActionController::ParameterMissing

所以我需要的是一种制作require()"可选"但仍然使用它来限制嵌套参数和安全性,因此人们无法添加{admin: true}之类的东西......

实际的params哈希看起来像:

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

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

1 个答案:

答案 0 :(得分:1)

您可以使用fetch代替require

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

查看rails guides以获取有关强参数的更多信息。