我有一个带有计数器缓存的Rails 4.2应用程序(设置为belongs_to:my_model,counter_cache:true),它设置的值不正确.我可以直接调用控制台并调用MyModel.associated_model_count并获得20,然后调用MyModel.associated_model.count并获得19.@R_691_301@不能解决这个问题.
解决方法
要回答部分问题并希望帮助您进行调试,计数器列仅在create和destroy上更新,因此保存对象不会触发计数器更新.更多详细信息可在以下选项下的:counter_cache条目下找到:
http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html#method-i-belongs_to
您可以使用MyModel.reset_counters(id,*计数器)(http://apidock.com/rails/ActiveRecord/CounterCache/reset_counters)手动触发计数器更新,如果您想要进入干净状态以确定它的位置.
相关问题以及有用的答案和讨论:Rails counter_cache not updating correctly