mongoid をバージョン 3.1.6 に更新したところ、reset_countersメソッドを使用してモデルの関係を追跡できるようになりました。しかし、gem の更新前と同じように、まだこのエラーが発生します。
undefined method `reset_counters' for Mongoid::Persistence::Atomic::Operation:Module
私の Gemfile には、次のバージョンがあります。
gem 'mongoid', '3.1.6'
また、Gemfile.lock は次のように述べています。
mongoid (3.1.6)
activemodel (~> 3.2)
moped (~> 1.4)
origin (~> 1.0)
tzinfo (~> 0.3.29)
カウンターを更新するモデルは次のとおりです。
class Presentation
include Mongoid::Document
include Mongoid::Timestamps
belongs_to :operation, :inverse_of => :presentations, :counter_cache => true
after_save :update_counter
def update_counter
self.operation_id_change.each do |e|
Operation.reset_counters(e, :presentations) unless e.nil?
end
end
end
そして、カウンターフィールドがあるモデルは次のとおりです。
class Operation
include Mongoid::Document
include Mongoid::Timestamps
field :presentations_count, type: Integer
has_many :presentations, :inverse_of => :operation, dependent: :destroy
end