事件有一列popularity
和许多关键字。关键字具有类别和名称。我试图通过它们的受欢迎程度来命令事件,但是只返回每个关键字名称中最受欢迎的事件和“分类法”类别。
这是我的疑问:
Event
.order(:popularity)
.joins(:keywords)
.where(keywords: {category: "taxonomy"})
.group("keywords.name")
但我收到以下错误:
PG :: GroupingError:错误:列“events.id”必须出现在GROUP中 BY子句或用于聚合函数
我哪里错了?
答案 0 :(得分:7)
Event
.order(:popularity)
.joins(:keywords)
.group('events.id') # <======
.where(keywords: { category: 'taxonomy' })
.group('keywords.name')