小组记录&获取rails中每个组的大小

时间:2012-01-27 08:37:02

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

您好我有一张名为Sold Products的表格,用于存储产品的购买信息。架构如下。

id |username | product_id| timestamp

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

id | product_name | description 

我想获得大部分销售的产品。如何获得积极的记录?请帮助。

1 个答案:

答案 0 :(得分: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')

方法2:基于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"}