Rails 名称中带有 "dot" 的强参数

Rails strong params with "dot" in name

我需要在 Rails 4 中允许一个参数,它的名称中有一个点:

我的 params 哈希如下所示:

{
  "dictionary_objects.id" => [
    "102", "110", "106"
  ]
}

我可以得到参数值:

>> params['dictionary_objects.id']
=> [
 [0] "102",
 [1] "110",
 [2] "106"
]

但是当我尝试允许它时,它 returns 一个空哈希:

 >> params.permit('dictionary_objects.id')
 Unpermitted parameters: dictionary_objects.id
 => {}

有谁知道如何允许名称中带有点的参数?

谢谢。

对于极端情况,我推荐一个非常有用的解决方法:

params.slice('dictionary_objects.id').permit!

所以你做白名单键,不要因为强参数而变得疯狂。


旁注:

rails 内置接收 dictionary_object_ids 之类的参数,用于 has_many 关系,您可以利用它。

我认为它只是不允许它,因为你有一个集合并且你告诉它允许单个值参数。如果您使用:

params.permit(:'dictionary_objects.id' => [])

那应该一切都好。