Я пытаюсь сгруппировать фрагменты страницы по типу и агрегировать html-контент. Вот как выглядит моя область импорта поиска:
scope :search_import, -> {
select("kind, string_agg(html_content, '\r\n') AS html_content")
.group(:kind)
}
Когда я пытаюсь переиндексировать записи, searchkick использует find_in_batches, который автоматически устанавливает порядок по возрастанию для первичного ключа, чтобы упорядочивание пакетов работало. Это приводит меня к следующей ошибке: column "page_fragments.id" must appear in the GROUP BY clause or be used in an aggregate function
.
Ясно, что я не могу добавить id
в предложение группы, и я попытался обойти это, добавив агрегацию id
в select: COUNT (*) AS id
. Однако четкое указание первичного ключа "page_fragments"."id"
в предложении порядка пропускает псевдоним.
Вопрос в том, что можно сделать? Похоже на тупик.