使用jsonb和变量键接受嵌套属性安全参数

时间:2017-08-18 04:29:16

标签: ruby-on-rails parameters jsonb accepts-nested-attributes

我正在尝试允许参数通过我的控制器获取类型为data的{​​{1}}属性,哈希看起来像这样:

jsonb

我让我的表单工作,我可以成功保存数据,但只能用于其中一种语言键。问题正在发生,因为在我的安全参数数组中,我有以下内容:

data: { "en" => { "activities_text" => "Activities", "playlists_text" => "Playlists", "additional_playlists_text" => "Additional Playlists" }, "es" => { "activities_text" => "Actividades", "playlists_text" => "Lista de Actividades", "additional_playlists_text" => "Listas de Actividades Adicionales" } }

我需要能够通过text_customization_attributes: [:id, data: [es: [:activities_text, :playlists_text, :additional_playlists_text]]]以及en:以及可能允许的任何其他语言es:。我天真地想到可能会加入 上面的这一行以及这一行:keys  会工作,但一个会覆盖另一个,只有最后一个允许的参数获胜。

关于我如何通过text_customization_attributes: [:id, data: [en: [:activities_text, :playlists_text, :additional_playlists_text]]]es:的任何想法?

先谢谢!

附录: 我能够使用这个

来保存整个哈希
en:

但似乎非常hackish ..必须有更好的方法。

1 个答案:

答案 0 :(得分:0)

正如你所说,可能有一些除enes以外的其他键,不知何故,我们必须告诉哪些参数是允许的。在您的情况下,您可以映射到空哈希,如

text_customization_attributes: [:id, data: {}]

但是,它有点脆弱,因为它打开了任意输入的大门。

Reference -> edgeguides