mongoid更新所有条件的文件

Gag*_*gan 15 ruby document mongoid

我有一个模特

class Employee
  include Mongoid::Document
  field :first_name
  field :last_name
  field :address1
  field :address2
  field :salary
end
Run Code Online (Sandbox Code Playgroud)

现在我需要将所有员工的工资更新为10000,其地址1是"卡尔加里"

现在我尝试了这个查询

Employee.update_all "salary = 10000", "address1 = 'Calgary'"
Run Code Online (Sandbox Code Playgroud)

但是这个查询给了我错误:

NoMethodError: undefined method `update_all' for Employee:Class
Run Code Online (Sandbox Code Playgroud)

谢谢

rub*_*ish 39

您应该尝试将MongoID更新为最新版本.Mongoid 2.0在某个时候发布了.我想在其中一个rc中引入了update_all,destroy_all和delete_all.

升级后,以下应该工作

Employee.where(:address1 => 'Calgary').update_all(:salary => 10000)
Run Code Online (Sandbox Code Playgroud)

  • AFAIK的问题是`update_all`是ResourceList(结果数组)上的方法,而不是模型本身.所以你不能调用Foo.update_all,但你可以调用Foo.some_selection.update_all. (7认同)