Предполагается, что вы знакомы с ActiveRecord, и они предполагают, что вы предполагаете, что Mongoid ведет себя как ActiveRecord (кроме случаев, когда он не может). В ActiveRecord, update_all
is explicitly documented не вызывать обратные вызовы:
update_all(updates)
[...] This method constructs a single SQL UPDATE statement and sends it straight to the database. It does not instantiate the involved models and it does not trigger Active Record callbacks or validations. [...]
Mongoid-х update_all
аналогично передает один update
операцию в MongoDB без вызова функции обратного вызова.
Документация Mongoid (как обычно в Ruby) немного тонка на важных деталях, поэтому вам придется привыкнуть к догадкам и чтению источника библиотек, которые вы используете. Включение тестов для проверки ваших догадок также является хорошей идеей, чтобы избежать неприятностей во время апгрейдов.
> c.update_all (resources) throws: NoMethodError: undefined method 'update_all '- есть ли современный эквивалент? –
@RomanGaufman [Мондоидские документы] (https://docs.mongodb.com/mongoid/6.1/api/Mongoid/Contextual/Mongo.html#update_all-instance_method) предполагают, что 'update_all' должен работать. Что конкретно означает 'c'? Какая версия Mongoid? –