gpt4 book ai didi

ruby-on-rails - Rails - 具有空数组的强参数

转载 作者:行者123 更新时间:2023-12-03 07:34:09 25 4
gpt4 key购买 nike

我正在向我的 Controller 发送一组关联 ID,例如 foo_ids。为了允许值数组,我使用:

params.permit(foo_ids: [])

现在的问题是,如果我发送一个空的 foo_ids 数组,该参数将被忽略。该关联不会像空数组那样清除所有 foos,而是保持不变,因为不允许使用 foo_ids

这可能是因为an empty array is converted to nil in rails ,并且该 nil 值将被忽略,因为强参数正在查找标量值数组,而不是单个标量值。

谁能提出一个解决这个问题的好方法吗?谢谢!

其他信息

在更新 Controller 操作中,我需要能够处理两种情况。我需要能够将 foo_ids 设置为空数组。如果我只想更新另一个字段,我还需要能够忽略 foo_ids 。如果 nil 对于第二种情况不起作用,则将 foo_ids 设置为空数组。

最佳答案

这已经很晚了,但我自己也遇到了这个问题。我通过在允许语句中包含标量版本和数组版本来解决这个问题,如下所示:

params.require(:photo).permit(:tags, tags: [])

仅供引用 - 它必须将两者放在同一个许可声明中 - 如果您将它们链接起来,它会因某种原因被丢弃。

编辑:我刚刚注意到通过此方法提交的空数组将变成 nil - 我现在有一堆应该是 nil 的空数组的字段。所以我发布的解决方案实际上并不适合我。

编辑第二个:我以为我已经添加了这个,但是这个问题与Rails在参数哈希上执行deep_munge有关。此评论解释了如何修复它:https://stackoverflow.com/a/25428800/130592

关于ruby-on-rails - Rails - 具有空数组的强参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20164354/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com