计数器缓存实现存在问题

我要把“耙子流产”。。。posts\U计数标记为只读错误

我有两个模型:用户模型和帖子模型

用户有很多帖子。
posts属于:user,:counter\u cache=>符合事实的

我有一个迁移,它将posts\u count列添加到users表中,然后计算并记录每个用户当前的帖子数量

self.up
添加列:users、:posts\u count、:integer、:default=>0
User.reset\u列\u信息
User.all.each do|u|
u、 更新属性(:posts\u count,u.posts.count)
终止
终止

当我运行迁移时,我得到了错误。当然,这是非常明确的,如果我从posts模型中删除:counter_cache声明,例如

属于:用户

迁移运行良好。这显然是没有意义的,因为您无法以这种方式真正实现它。我错过了什么

您应该使用User.reset\u计数器来执行此操作。此外,我建议使用find_each而不是each,因为它将成批迭代集合,而不是一次迭代所有集合

self.up
添加列:users、:posts\u count、:integer、:default=>0
User.reset\u列\u信息
User.find|u每个do|u|
User.reset_计数器u.id,:posts
终止
终止

发表评论