我有一个名为 Animal 的 ActiveRecord 模型。 动物有 id 和 client_id。 在我的应用程序中有一个名为 @selectedanimals 的数组,其中包含我想要更新的动物的 id,例如:@selectedanimals: ["6", "14", "5"]。 我有这些动物的新 client_id 值,例如@newclient.id,并且我想使用新 client_id 更新所有这些动物记录。 我现在拥有的是:
Animal.update_all({:client_id => @transferclient.id}, {:id => @selecteanimals})
我知道这不是 100% 正确,因为它有 :id 问题。 我收到这样的错误: 为 nil 调用 id,这会被错误地设置为 8 ——如果你确实想要 nil 的 id,请使用 object_id
请原谅我的无知,但这是我第一次使用 update_all,我没有看到任何向其传递要更新的记录 id 数组的示例,因此我们将不胜感激。
编辑: 显然 @transferclient.id 没有正确定义。那是我的问题。 谢谢大家。
最佳答案
我是 Ruby 新手,所以我不知道 API 最近是否有一些更改,但 Danpe's答案以及最初根据提问者的建议实际上有效,但对我不起作用。他们都提出了语法错误。
对我有用并且在 API 文档中实际提出的解决方案是这样的:
Animal.where(:id => @selectedanimals).update_all(:client_id => @transferclient.id)
关于ruby-on-rails - Rails ActiveRecord update_all id 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19509240/