Я использую умный список со списком postgresql в приложении rails. В таблице показан список элементов результата ассоциации, который в некоторых случаях элементы могут повторяться, но мне нужно показать этот элемент только один раз в таблице, но когда я добавляю DISTINCT или uniq к активной записи, он преобразуется в массив и умный листинг показывает и ошибку. Тогда я попытался решить это, используя gruop, и ЭТО РАБОТАЕТ! но когда я попытался выполнить полнотекстовый поиск с использованием pg_scope, запрос pg вылетел. Вот код:
class Prospect < ActiveRecord::Base
include PgSearch
pg_search_scope :search_by_name,
against: [:name, :father_last_name, :mother_last_name],
associated_against: { user: [:first_name, :father_last_name,
:mother_last_name] },
ignoring: :accents
has_many :projects, through: :project_prospects, dependent: :destroy
.
.
.
class User < ActiveRecord::Base
has_many :project_prospect
has_many :projects, through: :user_projects, dependent: :nullify
end
Запрос
search = User.find(id).prospects.select("prospects.*").group("prospects.id")
search = search.search_query("Say my name") if search_full_text.present?
Группа работает для удаления дубликатов в активной записи, но когда требуется полнотекстовый поиск, я получаю следующую ошибку
PG::GroupingError: ERROR: column "pg_search_ece0055f6ad1de91cd168e.rank" must appear in
the GROUP BY clause or be used in an aggregate function
LINE 1: ...168e.pg_search_id GROUP BY prospects.id ORDER BY pg_search_...