2012-01-27 1 views
2

こんにちは私は製品&スキーマの購買情報を格納している販売された製品と呼ばれるテーブルが次のとおりです。グループレコード&レールの各グループのサイズを取得

id |username | product_id| timestamp 

私は、そのスキーマが、私が最も販売された製品を取得したい

id | product_name | description 

ある別のテーブルの製品を持っています。アクティブレコードでそれを取得するにはどうすればよいですか?これを行うための

答えて

1

つの方法は...最初のものは、第二のより簡単に、より効率的である:

方法1:あなたはsold_products_countを追加したいその後counter cache

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

を使用します属性を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"} 
関連する問題