ruby-on-rails - Rails ActiveRecord update_all id 数组

标签 ruby-on-rails ruby arrays activerecord

我有一个名为 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/

相关文章:

java - 为什么允许向上转换数组,而不允许使用泛型?

C - 超出索引元素的地址与整数相同

ruby-on-rails - 使用 ActiveSupport::Concern 使 ClassMethods 也可用作模块函数

ruby-on-rails - 在一行代码中初始化和递增变量

ruby-on-rails - OpenSSL::Cipher::CipherError Rails 5.2

ruby - 在 Watir 脚本中调用 Watir 脚本

arrays - 如何在 Swift 的 View Controller 类中与 Collection View 委托(delegate)共享数据

ruby-on-rails - 将 Rails + Puma + Postgres 应用程序部署到 Elastic beanstalk 的正确方法?

ruby-on-rails - 如何使用 Rspec 测试带有嵌套路由的 Controller ?

ruby - 在 Ruby 中创建和访问 Postgres(没有 Rails)