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
модель.
Также, после добавления приведенного выше кода, не забудьте переиндексировать.