Как объединить таблицу и считать записи в Rails 3? - PullRequest
14 голосов
/ 10 августа 2011

У меня есть класс Collection, в котором много монет.Я пытаюсь выбрать коллекции, которые имеют более двух монет.В настоящее время у меня нет проблем с этим через прямой Ruby, но это крайне неэффективно.

Мой текущий код:

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

Как мне добиться этого посредством joins вызова с Arel?

Спасибо!

Ответы [ 2 ]

23 голосов
/ 14 августа 2011

Чтобы ответить на мой вопрос:

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

Шляпа для KJF , который задал этот похожий вопрос и Краковер для ответа на него.

1 голос
/ 10 августа 2011

Добавить столбцы counter_cache и запросить их.

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

...