Как уже сообщали другие, вы можете присоединиться к likes
, а затем заказать по количеству.Производительность может быть немного занижена в зависимости от индексации и т. Д. У вас будет немного другой синтаксис в зависимости от того, используете ли вы Rails 2 или 3.
Альтернативой может быть сохранение денормализованного столбца likes_count
в websites
, который обновляется при сохранении объекта модели Like
.
Затем вам нужно просто запросить Website
и указать порядок likes_count
по убыванию (и легко индексируется).
Для этого создайте целочисленный столбец likes_count
в websites
и укажите параметр :counter_cache
в объявлении belongs_to
в модели Likes
.Например:
class Likes
belongs_to :website, :counter_cache => true
end
Проверьте http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html для получения дополнительной информации