我刚刚将我的 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