Rails 4计数器缓存不同步

neu*_*mic 7 ruby-on-rails counter-cache ruby-on-rails-4 rails-activerecord

我有一个带有计数器缓存(设置为belongs_to :my_model, counter_cache: true)的Rails 4.2应用程序,它设置了不正确的值.我可以直接调用控制台并调用MyModel.associated_model_count并获取20,然后调用MyModel.associated_model.count并获取19.保存模型并不能解决这个问题.

这些价值似乎没有多少关闭,但有些肯定是关闭的,我无法弄清楚原因.

ele*_*nts 6

要回答你的问题的一部分,并希望能帮助你在调试时,计数器列仅更新createdestroy,所以保存对象不会触发计数器更新.更多细节可以:counter_cache在选项下的条目下找到:http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html#method-i-belongs_to

您可以使用MyModel.reset_counters(id, *counters)(http://apidock.com/rails/ActiveRecord/CounterCache/reset_counters)手动触发计数器更新,如果您想要进入干净状态以确定它的位置.

相关问题以及有用的答案和讨论:Rails counter_cache未正确更新