Mongoid предлагает метод Model # inc , но это метод экземпляра, а не метод класса.
Однако, прочитав исходный код метода Model.update_all
, вы обнаружите, чтоможно легко создать собственный метод класса inc
.
def update_all(attributes = {})
klass.collection.update(
selector,
{ "$set" => attributes },
Safety.merge_safety_options(:multi => true)
).tap do
Threaded.clear_safety_options!
end
end
Как видите, Mongoid передает запрос в базовый драйвер mongodb.Следующий метод должен работать
class User
def self.inc(field, value)
klass.collection.update(
selector,
{ "$inc" => { field => value } },
Safety.merge_safety_options(:multi => true)
).tap do
Threaded.clear_safety_options!
end
end
end
Обратите внимание, я еще не проверял его.