我有一个模型鞋和购买,用户使买一双鞋。
每次购买都有一个大小属性。我有兴趣向我的用户列出每只鞋的平均鞋码。
显然,只要没有新的购买,我就可以实时计算并缓存结果。然而,我研究了rails中的counter_cache,我意识到它有点类似于我想要实现的目标。
我在鞋里的purchases_count上实现了一个counter_cache。有没有一种优雅的方法可以在counter_cache实现中添加额外的字段total_sizes并覆盖某些方法,以便当purchases_counter增加时,total_sizes也会相应地更新?
谢谢!
发布于 2011-09-20 17:58:21
你可以使用回调。例如:
class Purchase < ActiveRecord::Base
belongs_to :shoe
after_create :update_total_sizes
def update_total_sizes
self.shoe.total_sizes += self.size
self.shoe.save
end
end我不知道计数器缓存实现中的覆盖方法,但这是非常干净和直接的IMO。
https://stackoverflow.com/questions/7482629
复制相似问题