我有一个带有计数器缓存(设置为belongs_to :my_model, counter_cache: true
)的 Rails 4.2 应用程序,它设置了不正确的值。我可以直接调用控制台并调用MyModel.associated_model_count
并获取20
,然后调用MyModel.associated_model.count
并获取19
。保存模型并不能解决此问题。
这些值似乎并没有太大的偏差,但有些肯定是偏差的,我不知道为什么。
我有一个带有计数器缓存(设置为belongs_to :my_model, counter_cache: true
)的 Rails 4.2 应用程序,它设置了不正确的值。我可以直接调用控制台并调用MyModel.associated_model_count
并获取20
,然后调用MyModel.associated_model.count
并获取19
。保存模型并不能解决此问题。
这些值似乎并没有太大的偏差,但有些肯定是偏差的,我不知道为什么。
为了回答您的部分问题并希望帮助您进行调试,计数器列仅在create
and上更新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 not updates correct