【问题标题】:group records & get size of each group in rails组记录并获取rails中每个组的大小
【发布时间】:2012-01-27 08:37:01
【问题描述】:

您好,我有一个名为 Sold Products 的表,其中存储了产品和架构的购买信息,如下所示。

id |username | product_id| timestamp

我有另一个表产品,它的架构是

id | product_name | description 

我想获得最畅销的产品。如何在活动记录中获得它?请帮助。

【问题讨论】:

    标签: postgresql activerecord ruby-on-rails-3.1


    【解决方案1】:

    有两种方法……第一种比第二种更容易、更有效:

    方法一:使用counter cache

    class SoldProduct < ActiveRecord::Base
      belongs_to :product, :counter_cache => true
    end
    

    然后您将sold_products_count 属性添加到Product 表并使用以下方法找到它们:

    Product.find(:all, :order => 'sold_products_count')
    

    方法二:基于SQL做

    sales_count = Product.joins(:sold_products).count(:group=>"sold_products.product_id").sort_by{|product, sales| sales}.reverse
    sales_count.each {|product, sales| puts "Product #{product} has #{sales} sales"}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-08-14
      • 1970-01-01
      • 2012-02-03
      • 2017-02-05
      • 1970-01-01
      • 1970-01-01
      • 2018-11-22
      相关资源
      最近更新 更多