Ruby on rails 根据多个产品的数量对ActiveRecord中的店铺进行排序
我有一个叫Shop的模型,它有很多产品 我试图根据商店里苹果、桔子和芒果的数量,一次对10家商店进行分类和展示 每家商店的苹果比桔子多,桔子比芒果多。商店将从苹果最多的商店开始分类 编写此查询最有效的方法是什么Ruby on rails 根据多个产品的数量对ActiveRecord中的店铺进行排序,ruby-on-rails,ruby-on-rails-3,activerecord,Ruby On Rails,Ruby On Rails 3,Activerecord,我有一个叫Shop的模型,它有很多产品 我试图根据商店里苹果、桔子和芒果的数量,一次对10家商店进行分类和展示 每家商店的苹果比桔子多,桔子比芒果多。商店将从苹果最多的商店开始分类 编写此查询最有效的方法是什么 谢谢 您的问题缺乏信息,因此我将采用以下表格: ------------- ----------------------------------------------------------- | Shop | | Stock
谢谢 您的问题缺乏信息,因此我将采用以下表格:
------------- -----------------------------------------------------------
| Shop | | Stock |
------------- -----------------------------------------------------------
| id | name | | id | shop_id | apple_count | orange_count | mango_count |
------------- -----------------------------------------------------------
基本上,您要求的是rails实现这一点的方法:
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)
希望这有帮助 你好,多米尼克,谢谢你的回答。抱歉,我应该添加更多信息:Shop有多个:产品,:through=>:stock Product有多个:shops,:through=>:stock stock model有Shop\u id Product\u id。可能不仅仅是苹果,橘子和芒果产品,所以我在商店和产品之间创建了另一个模型。而且每个商店必须有比他们携带的任何其他产品更多的苹果。