如何使用ActiveRecord(Rails 3)优化这种情况

如何使用ActiveRecord(Rails 3)优化这种情况,activerecord,ruby-on-rails-3,query-optimization,associations,Activerecord,Ruby On Rails 3,Query Optimization,Associations,假设我有以下关联: Club has_many users User has_many guns Gun has_many bullets Club: Moe, Larry, Curly Moe: 2 guns gun 1 has 100 bullets gun 2 has 20 bullets Larry: 1 gun gun 1 has 40 bullets Curly: 2 guns gun 1 has 20 bullets gun 2 has 10 bullets 俱乐部有很多用

假设我有以下关联:

Club has_many users User has_many guns Gun has_many bullets Club: Moe, Larry, Curly Moe: 2 guns gun 1 has 100 bullets gun 2 has 20 bullets Larry: 1 gun gun 1 has 40 bullets Curly: 2 guns gun 1 has 20 bullets gun 2 has 10 bullets 俱乐部有很多用户 用户有很多枪 枪里有很多子弹 俱乐部:莫,拉里,科利 莫:两把枪 1号枪有100发子弹 2号枪有20发子弹 拉里:一支枪 枪1有40发子弹 科莉:两把枪 枪1有20发子弹 2号枪有10发子弹 现在,我想知道俱乐部里有多少子弹

它很容易使用:Moe.bullets.sum(:amount)=120个子弹

但是我如何在不遍历每个用户的情况下获得所有项目符号呢

希望这是有道理的

顺便说一句,我正在使用ActiveRecord和Rails 3


谢谢

我假设枪1和枪2是名称,而不是唯一标识符。那么,

俱乐部有很多用户 用户有很多枪 枪里有很多子弹

俱乐部:莫,拉里,科利

枪:1(Moe),2(Moe),3(Larry),4(Curly),5(Curly)

莫:两把枪 (枪)1有100发子弹 (枪)2有20发子弹

拉里:一支枪 (枪)3有40发子弹

科莉:两把枪 (枪)4有20发子弹 (枪)5有10发子弹

在这种情况下,我会将俱乐部id也添加到枪表中。我们可以直接得到一个俱乐部的子弹数

或者另一种解决方案是使用计数器缓存

希望能有帮助

rgds

坎南河