Rails 3: самый быстрый способ определить популярность модели путем подсчета ассоциаций - PullRequest
1 голос
/ 22 июля 2011

Предположим, у меня есть модель Post, у которой есть Comments_many. Я хочу получить топ-10 самых популярных постов на основе тех, у кого больше всего комментариев. Предполагая, что у меня есть сотни тысяч постов, какой самый эффективный способ получить эти 10 лучших постов?

Кроме того, как мне кэшировать этот запрос?

Спасибо!

1 Ответ

2 голосов
/ 22 июля 2011

Я бы посоветовал вам добавить столбец кеша в Post с именем comments_count. Добавьте индекс к этому столбцу, и затем вы сможете выбрать самые популярные сообщения по:

# app/models/post.rb
scope :popular, lambda { order("comments_count DESC").limit(10) } 

Ознакомьтесь с документом Методы класса ассоциаций ActiveRecord для получения дополнительной информации о встречных кэшах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...