我试图使用Searchkick来基于多个模型运行搜索并返回。
我的书模型包含此
class Book < ActiveRecord::Base searchkick has_many :book_subjects has_many :subjects, through: :book_subjects belongs_to :author belongs_to :publisher end
然后我的控制器有这个
def index if params[:search].present? @books = Book.search(params[:search], operator: "or") else @books = Book.all end end
我希望搜索结果搜索关联的模型并在那里返回任何结果-嘘主题名称,作者和发布者。
谢谢
在Book模型中,您需要search_data为索引建立一个块。
search_data
def search_data attributes.merge( author_name: author(&:name) publisher_name: publisher(&:name) subjects_name: subjects.map(&:name) ) end
这会将关联添加到您的索引中。
您将.map方法用于has_many关联。
.map
has_many