Во-первых, спасибо за вашу помощь и поддержку.после настройки простой поиск с использованием сценического и текстового.Я попытался объединить результаты с простой комбинацией на контроллере поиска.поиск работает очень хорошо, но если я ищу тэг, я получаю
неопределенный метод `username 'для #Tag: 0x0000
, так как я нахожу много решенийприходят с конкатенацией запроса и модели связаны.
, поэтому в этом случае модели не связаны.так что кто-то может дать совет, как объединить отдельные атрибуты моделей в одном запросе?
модель:
class Search < ApplicationRecord
extend Textacular
belongs_to :searchable, polymorphic: true
attr_accessor :query
def results
if @query.present?
self.class.search(@query).preload(:searchable).to_a.map!(&:searchable).uniq
else
Search.none
end
end
end
контроллер:
class SearchController < ApplicationController
respond_to :html
def index
@users = User.search(params[:search])
@tags = Tag.search(params[:search])
@search_results = @users + @tags
if params[:search].present?
@search_results = Search.new(query: params[:search]).results
else
@users = User.all
end
end
end
вид:
<div>
<% @search_results.each do |r| %>
<%= r.username %>
<%= r.name %>
<% end %>
</div>