2012-04-12 8 views
0

私はコントローラでモデルRails、ActiveRecord - 関係でカウント行を取得する方法:belons_to?

class Article < ActiveRecord::Base 
    belongs_to :category 
end 

class Category < ActiveRecord::Base 
    has_one :article 
end 

は私が

@categories = Category.order('name') 

すべてのカテゴリ名を取得していたか、私はすべてのカテゴリを取得し、最も使用されるのカウントによってそれらを並べ替えることができますか?

答えて

1

has_one :articlehas_many :articlesに変更する必要があります。

だから私のバージョン:

Category.joins(:articles) 
     .select("categories.*, count(articles.id) as counter") 
     .order("counter") 
+0

私のアプリは、PostgreSQL上で実行されているので、私は少しあなたのクエリを更新する必要がありました: 'Category.joins(:記事) .select(「カテゴリ*、カウント(。 ( "カウンターDESC、名前") '。問題は、Article table 'category_id' ** 2 **(例えば"スポーツ ")、** 2 **(例えば"スポーツ ")、** 3 **(例えば"ニュース ")ので、最初のポジション** Sport **の2つのアイテムと2 - 10のポジションにクエリーが印刷され、残りのアイテムには1つのアイテムが印刷されます。そんなことがあるものか? **スポーツ**は2つのアイテム、**ニュース** 1アイテム、残りは0である必要があります。 – user984621

+0

あなたはあなたが何をしているのか分かりません。質問を編集して、正確に何を望みますかを明確にします。 – megas

関連する問題