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

时间:2010-10-11 23:32:41

标签: 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中有多少子弹。

它易于使用:Moe.bullets.sum(:金额)= 120发子弹。

但是如何在不迭代每个用户的情况下获得所有项目符号呢?

希望这是有道理的。

BTW,我正在使用ActiveRecord和Rails 3。

谢谢!

1 个答案:

答案 0 :(得分:2)

我认为枪1和枪2是名称而不是唯一标识符。在那种情况下,

Club has_many用户 用户has_many枪 Gun has_many bullets

Club:Moe,Larry,Curly

枪:1(萌),2(萌),3(拉里),4(卷曲),5(卷曲)

Moe:2支枪 (枪)1有100颗子弹 (枪)2有20发子弹

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

卷曲:2支枪 (枪)4有20发子弹 (枪)5有10发子弹

在这种情况下,我会将俱乐部ID添加到枪台。我们可以直接得到一个俱乐部的子弹......

或者另一种解决方案是使用counter_cache ...

希望有所帮助

RGDS,

Kannan R