如何在Rails 3中加入表并计算记录?

时间:2011-08-09 23:00:21

标签: ruby ruby-on-rails-3 arel

我有一个Collection班,里面有很多钱币。 我想选择有两个以上硬币的收藏品。 目前,我通过直接Ruby实现这一点没有问题,但效率极低。

我目前的代码:

collections = Collection.all.select { |c| c.coins.count > 2 }

如何通过使用Arel进行joins调用来实现这一目标?

谢谢!

2 个答案:

答案 0 :(得分:23)

回答我自己的问题:

Collection.joins(:coins).group("coins.collection_id").having("count(coins.id) > 2")

要求KJFthis similar question回答问题的krakover的小费提示。

答案 1 :(得分:1)

添加counter_cache列并查询它们。

http://railscasts.com/episodes/23-counter-cache-column