Ruby on rails 根据多个产品的数量对ActiveRecord中的店铺进行排序

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的模型,它有很多产品

我试图根据商店里苹果、桔子和芒果的数量,一次对10家商店进行分类和展示

每家商店的苹果比桔子多,桔子比芒果多。商店将从苹果最多的商店开始分类

编写此查询最有效的方法是什么


谢谢

您的问题缺乏信息,因此我将采用以下表格:

-------------      -----------------------------------------------------------
| 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。可能不仅仅是苹果,橘子和芒果产品,所以我在商店和产品之间创建了另一个模型。而且每个商店必须有比他们携带的任何其他产品更多的苹果。