ОБНОВЛЕНИЕ: (основано на обновлении постов и пояснениях к комментариям)
Возможно, вы хотите что-то вроде этого:
scope :pop, order('stats.votes DESC')
scope :for_player, lambda{|player| joins(:rates).where(:player_id => player.id)}
Тогда вы сможете позвонить Item.for_player(@my_player).pop
.
Отказ от ответственности: я не очень хорош в построении активных запросов на запись на макушке, поэтому выше может понадобиться немного подправить ...
(Оригинальный ответ)
Вы, вероятно, хотите что-то вроде этого:
scope :pop, order('stats.votes DESC')
scope :by_player, group('player_id')
Тогда вы сможете сделать Item.by_player.pop
и получить то, что вы хотите.(Вы можете проверить в консоли с помощью Item.by_player.pop.to_sql
, чтобы увидеть, генерируется ли ожидаемый запрос SQL.)