【问题标题】: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"}