我向控制器发送关联ID数组,例如foo_ids
。要允许值的数组,我使用:现在Rails - 空阵列的强参数
params.permit(foo_ids: [])
,问题是,如果我发送的foo_ids
空数组,该参数将被忽略。不应将所有foos
作为空数组进行清除,而是关联,因为不允许使用foo_ids
。
这可能是因为an empty array is converted to nil in rails,并且nil值被忽略,因为强参数正在寻找一个标量值数组,而不是单个标量值。
任何人都可以提出一个很好的方法来解决这个问题吗?谢谢!
其他信息
在更新控制器动作,我需要能够处理两种情况。我需要能够将foo_ids
设置为空数组。如果我只想更新另一个字段,我还需要能够忽略foo_ids
。如果nil不适用于第二种情况,则将foo_ids
设置为空数组。
我正在考虑猴子补丁的before_filter在那里我会做些什么来解决这个问题的是,在“_ids”结尾的所有键。想法? – futbolpal
这会工作。我有一些情况下需要为嵌套在哈希中的参数做这个工作,所以您可能也想根据您的使用情况来处理这些参数。 –