以下情况:
我有一个poi模型,里面有很多张图片(1:n)。我想重新计算 counter_cache 列,因为值不一致。
我尝试在 ruby 中遍历每条记录,但这花费的时间太长,有时会因一些“段错误”错误而退出。
所以我想知道,是否可以使用原始 sql 查询来做到这一点?
最佳答案
例如,如果您有 Post
和 Picture
模型,并且发布 has_many :pictures
,您可以使用 全部更新
:
Post.update_all("pictures_count=(Select count(*) from pictures where pictures.post_id=posts.id)")
关于mysql - 重新计算 120k 记录的计数器缓存 [Rails/ActiveRecord],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2782953/