我正在尝试在 Postgres 上使用我的 Rails 3.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...
以下是模型的外观:
用户.rb
has_many :trades
has_many :taggings, :through => :trades
has_many :tags, :through => :taggings
贸易.rb
has_many :taggings
has_many :tags, :through => :taggings
标记.rb
belongs_to :tag
belongs_to :trade
标签.rb
has_many :taggings
has_many :trades, through: :taggings
如果有人可以帮助修改查询以计算用户的标签,那将不胜感激。谢谢!