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 ответа:
Вы должны попытаться обновить 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