Я - попытка найти вершину n
количество категорий, поскольку они касаются статей, существует habtm отношения, настроенные между двумя. Это - SQL, который я хочу выполнить, но не уверено в том, как сделать это с ActiveRecord кроме использования find_by_sql
метод. есть ли любой способ сделать это с методами ActiveRecord:
SELECT
"categories".id,
"categories".name,
count("articles".id) as counter
FROM "categories"
JOIN "articles_categories"
ON "articles_categories".category_id = "categories".id
JOIN "articles"
ON "articles".id = "articles_categories".article_id
GROUP BY "categories".id
ORDER BY counter DESC
LIMIT 5;
Вы можете использовать find с опциями для достижения того же запроса:
Category.find(:all,
:select => '"categories".id, "categories".name, count("articles".id) as counter',
:joins => :articles,
:group => '"categories".id',
:order => 'counter DESC',
:limit => 5
)