сортировка имеет много через - PullRequest
0 голосов
/ 31 марта 2012

У меня есть модель категории, модель изображения и модель пользователя

  Category:
      has_many :images
      has_many :users, :through=>'images'


  Image: 
    belongs_to :category, :counter_cache => true
    belongs_to :user

  User:
      has_many :images


   Category.first.users //returning users but its not ordering ie :order=>' images uploaded by users in that category DESC'.
   Category.all.collect(&:users)  //returning users but its not ordering ie :order=>' images uploaded by users in that category DESC'..
  • Мне нужен список пользователей для этой категории, в котором 25 лучших пользователей имеют максимальное количество изображений в этой категории.
  • Мне нужны 25 лучших пользователей в двух или более категориях, например, 25 лучших пользователей в категориях 1 и 2.

1 Ответ

0 голосов
/ 01 апреля 2012

Попробуйте сделать:

Category.first.images.group(:user_id).count(:user_id, :order=>"count_user_id desc").map {|k,v| k}.first(25)

Это даст вам упорядоченный массив из 25 идентификаторов пользователей, публикующих изображения в категории.

Я полагаю, что все это делается в одном запросе.вам нужно сделать более сложный выбор (найти по sql)

...