В ваших вопросах недостаточно информации, поэтому я приму следующие таблицы:
------------- -----------------------------------------------------------
| Shop | | Stock |
------------- -----------------------------------------------------------
| id | name | | id | shop_id | apple_count | orange_count | mango_count |
------------- -----------------------------------------------------------
По сути, вы запрашиваете путь рельсов , чтобы сделать это:
select shop.name
,apple_count
,orange_count
,mango_count
from current_stock
inner join shop on current_stock.shop_id = shop.shop_id
order by apple_count desc
,orange_count desc
,mango_count desc
limit 10
Вы можете достичь этого, выполнив следующие действия:
Shop.joins(:stocks).order("apple_count desc, orange_count desc, mango_count desc").limit(10)
Надеюсь, это поможет!