Rails с Searchkick: получение результатов с объединенной таблицей - PullRequest
0 голосов
/ 24 ноября 2018

Я начинаю использовать searchkick в своем приложении, и у меня есть две модели: Дом и Адрес (который принадлежит дому).

Дом:

class House < ApplicationRecord
 searchkick
 has_one :address,  dependent: :destroy
end

Адрес:

class Address < ApplicationRecord
 searchkick
 belongs_to :house
end

В моем контроллере у меня есть

def index
 if params[:term].present?
  @houses = House.search(params[:term])
 else
  @houses = House.search('*')
 end
end

Прямо сейчас, searchkick работает, когда я ищу данные о доме, которые находятся в таблице houses, но если, например, я смотрюдля поля в таблице адресов я не получаю никакого результата вообще.Можно ли это сделать?

Заранее большое спасибо!

1 Ответ

0 голосов
/ 24 ноября 2018

Я думаю, вам также нужно индексировать адреса.Для этого добавьте приведенный ниже код к вашей House модели:

def search_data
  attributes.merge(
      address_city: self.address.try(:city),
      address_zip: self.address.try(:zip)
  )
end

Не стесняйтесь изменять приведенный выше код на основе ваших полей в модели Address.

Кроме того, последобавив приведенный выше код, не забудьте переиндексировать.

...