0

我弄乱了用户表中的计数器缓存列。我尝试重新计算它,但它没有保存值。

这不起作用:

User.update_all("boards_count=(Select count(*) from boards where boards.user_id=users.id)")

甚至没有这个:

 User.all.each do |user|
     user.boards_count = user.boards.length 
     user.save // this is returning true but value is not reflected in the database.
 end 
4

1 回答 1

2

计数器缓存是只读模型的属性。

尝试使用 reset_counters ( http://apidock.com/rails/ActiveRecord/CounterCache/reset_counters ) 或使用连接运行原始 sql,例如ActiveRecord::Base.connection.execute("UPDATE ....")

于 2012-08-01T11:17:15.033 回答