:counter_cache => true表示存储和

我有表usersscores 。 这是协会:

 belongs_to :user #score model has_many :scores #user model 

users具有名为scores_count的列。 在此列中,我将所有值的总和存储在表scores

我想用这种方式在列scores_count: :counter_cache => true存储所有scores的总和

但是:counter_cache => true只保存表scores的行scores 。 是否有类似的方法来存储表scores中所有值的总和? 或者我必须自己实施这项任务?

不,你必须自己实施。 反缓存仅用于存储关联记录的数量。 您可以使用Score上的回调来实现它,以更新关联的User 。 另请参见如何在rails中缓存计算列?

此外,除非您每次都要求出明显的性能问题,否则请避免使用这样的缓存。 这只是容易出错并且过时的东西。 如果你真的不需要它,那就不值得了。

你可以使用counter_culture gem。

 class Score < ActiveRecord::Base belongs_to :user counter_culture :user, column_name: 'scores_sum', delta_column: 'score_value' end