开发者

How can I optimize this situation with ActiveRecord (Rails 3)

开发者 https://www.devze.com 2023-01-20 01:45 出处:网络
Let\'s say I have the following association: Club has_many users User has_many guns Gun has_many bullets

Let's say I have the following association:

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

Now, I want to find out how many bullets in the CLUB.

It's easy to use: Moe.bullets.sum(:amount) = 120 bullets.

But how can I get all of the bullets without iterating through each user?

Hope that makes sense.

BTW, I am 开发者_JAVA技巧using ActiveRecord and Rails 3.

Thanks!


I assume the gun 1 and gun 2 are the names and not a unique identifier. In that case,

Club has_many users User has_many guns Gun has_many bullets

Club: Moe, Larry, Curly

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

Moe: 2 guns (gun) 1 has 100 bullets (gun) 2 has 20 bullets

Larry: 1 gun (gun) 3 has 40 bullets

Curly: 2 guns (gun) 4 has 20 bullets (gun) 5 has 10 bullets

In which case, i would add the club id also to the gun table. with which we can directly get count of bullets a club has...

Or an alternative solution is to use counter_cache...

Hope it helps

rgds,

Kannan R

0

精彩评论

暂无评论...
验证码 换一张
取 消