mongoid обновить все документы с условиями


У меня есть модель

class Employee
  include Mongoid::Document
  field :first_name
  field :last_name
  field :address1
  field :address2
  field :salary
end

Теперь мне нужно обновить всю зарплату сотрудника до 10000, чей адрес1 - "Калгари"

Теперь я попробовал этот запрос

Employee.update_all "salary = 10000", "address1 = 'Calgary'"

Но этот запрос дал мне ошибку как:

NoMethodError: undefined method `update_all' for Employee:Class

Спасибо

3 15

3 ответа:

Вы должны попытаться обновить MongoID до последней версии. Mongoid 2.0 был выпущен некоторое время назад. Я думаю, update_all, destroy_all и delete_all были представлены в одном из rc.

После обновления, следующее должно работать

Employee.where(:address1 => 'Calgary').update_all(:salary => 10000)

В соответствии с этим http://groups.google.com/group/mongoid/browse_thread/thread/ac08564d5a38da13?pli=1

И быстрая модель.respond_to?(:update_all, а) выдаст значение true, говорит о том, что модель.update_all отлично

Более современный способ сделать это с помощью Moped (Основной драйвер):

Employee.collection.find(address1: 'Calgary').update_all(salary: 10000)

странный запрос кстати: P