PostgresのRails3.2アプリを使用したタグ付けでこのRailscastを実行しようとしています。タグクラウド機能以外は動作しています。ただし、ユーザーが作成したタグに基づいてタグクラウドを形成することを検討して、レイヤーを追加しています。
Railscastのコードを適応/改訂しようとしています:
def self.tag_counts
Tag.select("tags.*, count(taggings.tag_id) as count").
joins(:taggings).group("taggings.tag_id")
end
しかし、これを実行すると、PGエラーが発生します。
PG::Error: ERROR: column "tags.id" must appear in the GROUP BY clause or be used in an aggregate function
LINE 1: SELECT tags.*, count(taggings.tag_id) a...
モデルの外観は次のとおりです。
user.rb
has_many :trades
has_many :taggings, :through => :trades
has_many :tags, :through => :taggings
trade.rb
has_many :taggings
has_many :tags, :through => :taggings
tagging.rb
belongs_to :tag
belongs_to :trade
tag.rb
has_many :taggings
has_many :trades, through: :taggings
誰かがクエリを修正してユーザーのタグを数えるのを手伝ってくれるなら、それは最もありがたいことです。ありがとう!