PG::GroupingError: ОШИБКА: столбец «events.id » должен отображаться в предложении GROUP BY или использоваться в агрегатной функции

#ruby-on-rails #activerecord

#ruby-on-rails #activerecord

Вопрос:

Событие имеет столбец popularity и множество ключевых слов. Ключевое слово имеет категорию и имя. Я пытаюсь упорядочить события по их популярности, но затем возвращаю только самое популярное событие из каждого ключевого слова с категорией «таксономия».

Вот мой запрос:

 Event
  .order(:popularity)
  .joins(:keywords)
  .where(keywords: {category: "taxonomy"})
  .group("keywords.name")
  

Но я получаю ошибку ниже:

PG::GroupingError: ОШИБКА: столбец «events.id » должен отображаться в предложении GROUP BY или использоваться в агрегатной функции

Где я ошибаюсь?

Комментарии:

1. Версия Postgres? некоторые предлагают использовать 9.1

Ответ №1:

 Event
  .order(:popularity)
  .joins(:keywords)
  .group('events.id') # <======
  .where(keywords: { category: 'taxonomy' })
  .group('keywords.name')