我有一个带有计数器缓存(设置为belongs_to :my_model, counter_cache: true
)的Rails 4.2应用程序,它设置了不正确的值.我可以直接调用控制台并调用MyModel.associated_model_count
并获取20
,然后调用MyModel.associated_model.count
并获取19
.保存模型并不能解决这个问题.
这些价值似乎没有多少关闭,但有些肯定是关闭的,我无法弄清楚原因.
要回答你的问题的一部分,并希望能帮助你在调试时,计数器列仅更新create
和destroy
,所以保存对象不会触发计数器更新.更多细节可以: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未正确更新