我要把“耙子流产”。。。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
终止
终止