我有一个带有计数器缓存的Rails 4.2应用程序(使用belongs_to :my_model, counter_cache: true
设置),它设置的值不正确。我可以直接调用控制台并致电MyModel.associated_model_count
并获取20
,然后致电MyModel.associated_model.count
并获取19
。保存模型并不能解决这个问题。
这些价值似乎并没有太大,但有些肯定是关闭的,我无法弄清楚原因。
答案 0 :(得分:6)
要回答部分问题并希望帮助您进行调试,计数器列仅在SocialMediaPost.includes(:metrics).where.not('metrics. short_link' => nil)
和create
上更新,因此保存对象不会触发计数器更新。更多详细信息可在此处的选项http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html#method-i-belongs_to
destroy
条目下找到
您可以使用:counter_cache
(http://apidock.com/rails/ActiveRecord/CounterCache/reset_counters)手动触发计数器更新,如果您想要进入干净状态以确定其中断的位置。
相关问题以及有用的答案和讨论:Rails counter_cache not updating correctly