铁轨的平均鞋尺寸

时间:2011-09-20 09:02:22

标签: ruby-on-rails

我有一个鞋子和购买模型,用户购买鞋子。

每次购买都有尺寸属性。我有兴趣向我的用户列出每个鞋子的平均鞋码。

显然,只要没有新购买,我就可以实时计算并缓存结果。但是,我已经在rails中查看了counter_cache,并且我意识到它与我想要实现的类似。

我确实在Shoe中的purchases_count上实现了一个counter_cache。有没有一种优雅的方法来添加额外的字段,total_sizes并覆盖counter_cache实现中的某些方法,这样当purchases_counter增加时,total_sizes也会相应更新?

谢谢!

1 个答案:

答案 0 :(得分:0)

您可以使用回调。 E.g:

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。