1

我有一个名为 Animal 的 ActiveRecord 模型。Animal 有 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 有问题。我收到这样的错误:Called id for nil,这会错误地是 8——如果你真的想要 nil 的 id,请使用 object_id

请原谅我的无知,但这是我第一次使用 update_all 并且我没有看到任何示例,其中您将要更新的记录的 id 数组传递给它,因此非常感谢任何帮助。

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

4

2 回答 2

2

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

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

Animal.where(:id => @selectedanimals).update_all(:client_id => @transferclient.id)
于 2017-02-06T11:09:48.473 回答
0

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

Animal.update_all({:client_id => @transferclient.id}, {"id IN (?)" , @selecteanimals})
于 2013-10-22T04:59:32.123 回答