Rails с Searchkick: получение результатов с объединенной таблицей

Я начинаю использовать 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 ответ

Решение

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

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

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

Также, после добавления приведенного выше кода, не забудьте переиндексировать.

Другие вопросы по тегам