【问题标题】:How can I optimize this situation with ActiveRecord (Rails 3)如何使用 ActiveRecord (Rails 3) 优化这种情况
【发布时间】:2010-10-12 21:48:59
【问题描述】:
假设我有以下关联:
俱乐部 has_many 用户
用户 has_many guns
枪有_许多子弹
俱乐部:萌、拉里、卷毛
萌:2枪
枪 1 有 100 发子弹
枪 2 有 20 发子弹
拉里:1枪
枪 1 有 40 发子弹
卷曲:2枪
枪 1 有 20 发子弹
枪 2 有 10 发子弹
现在,我想知道俱乐部里有多少子弹。
使用简单:Moe.bullets.sum(:amount) = 120 个子弹。
但是如何在不遍历每个用户的情况下获得所有项目符号?
希望这是有道理的。
顺便说一句,我正在使用 ActiveRecord 和 Rails 3。
谢谢!
【问题讨论】:
标签:
activerecord
ruby-on-rails-3
query-optimization
associations
【解决方案1】:
我假设 gun 1 和 gun 2 是名称而不是唯一标识符。在这种情况下,
Club has_many 用户
用户 has_many guns
枪有_许多子弹
俱乐部:萌、拉里、卷毛
枪:1(萌),2(萌),3(拉里),4(卷毛),5(卷毛)
萌:2支枪
(枪)1有100发子弹
(枪)2有20发子弹
拉里:1 枪
(枪)3有40发子弹
卷毛:2 支枪
(枪)4有20发子弹
(枪)5有10发子弹
在这种情况下,我会将俱乐部 ID 也添加到枪表中。用它我们可以直接得到一个俱乐部的子弹数量......
或者另一种解决方案是使用 counter_cache...
希望对你有帮助
rgds,
坎南R