gem pg_search возвращает дубликаты - PullRequest
2 голосов
/ 27 января 2020

Я использую pg_search gem для поиска в модели и заметил, что некоторые поиски возвращают повторы того же результата.

class Client < ActiveRecord::Base
    include PgSearch::Model
    pg_search_scope :client_search, 
        against: [:name, :mindbody_id, :phone, :unique_mb], 
        associated_against: {
            address: [:phone, :street],
            user: [:email],
            location: [:name]
        },
        using: { 
            tsearch: { 
                prefix: true 
            }
        }
   ...
end

Когда я ищу Client.client_search("abc"), мой результирующий массив содержит один и тот же Client много раз. Каждая запись имеет одинаковый идентификатор, и результаты кажутся неразличимыми.

Есть идеи, почему результат дублируется?

1 Ответ

0 голосов
/ 27 января 2020

Вам необходимо переместить деталь against в associated_against в качестве столбцов поиска на связанных моделях.

pg_search_scope :client_search,
  associated_against: {
    client:   [:name, :mindbody_id, :phone, :unique_mb],
    address:  [:phone, :street],
    user:     [:email],
    location: [:name]
  },
  using: { 
    tsearch: { 
      prefix: true 
    }
  }
...
...