Rails ActiveRecord update_all array of ids



我有一个名为Animal的ActiveRecord模型。动物有身份证和client_id。在我的应用程序中,有一个名为@selectedanimals的数组,其中包含我要更新的动物的id,例如:@selectedanimals:["6","14","5"]。我有像@newclient.id 这样的动物的新client_id的价值,我想用新client_id更新所有这些动物记录。我现在拥有的是:

Animal.update_all({:client_id => @transferclient.id}, {:id => @selecteanimals})

我知道这不是 100% 正确的,因为它有 :id 问题。我收到这样的错误:将 id 称为 nil,这将错误地称为 8 - 如果您真的想要 nil 的 id,请使用 object_id

原谅我的无知,但这是我第一次使用 update_all 我没有看到任何示例,您可以向其传递要更新的记录的 ID 数组,因此任何帮助将不胜感激。

编辑:显然,@transferclient.id 没有正确定义。那是我的问题。谢谢大家。

我是

Ruby 的新手,所以我不知道 API 最近是否有一些变化,但 Danpe 的答案以及根据提问者实际有效的最初建议对我不起作用。他们都提出了语法错误。

对我有用且实际上在 API 文档中提出的解决方案是这样的:

Animal.where(:id => @selectedanimals).update_all(:client_id => @transferclient.id)

您需要检查 id 是否在该数组内:

Animal.update_all({:client_id => @transferclient.id}, {"id IN (?)" , @selecteanimals})

最新更新