重新计算120k记录的计数器缓存[Rails/ActiveRecord]

Seb*_*ian 2 mysql activerecord ruby-on-rails

以下情况:

我有一个poi模型,有很多图片(1:n).我想重新计算counter_cache列,因为值不一致.

我试图在ruby中遍历每条记录,但这需要花费太长时间,并且有时会出现一些"分段错误"错误.

所以我想知道,如果它可以用原始的SQL查询做到这一点?

Voy*_*yta 8

例如,如果你有PostPicture模型,并发布has_many :pictures,你可以这样做update_all:

Post.update_all("pictures_count=(Select count(*) from pictures where pictures.post_id=posts.id)")
Run Code Online (Sandbox Code Playgroud)