在Rails中,我正在使用searchkick
gem。用户和书有两种模式,我在用户模型上应用了searchkick。两种模型如下:
class User < ApplicationRecord
searchkick
has_many :books
end
class Book < ApplicationRecord
belongs_to :user
end
图书模型有一个类型字段。现在,我想对用户模型进行不同类型的查询。
我尝试了很多查询,也试过加入但没有用。如果有人可以请求帮助查询以搜索此类结果。
我不想在书模型中搜索用户模型,只是在用户模型中搜索,但是有相关的书籍。
答案 0 :(得分:0)
使用自定义search_data
方法为搜索索引添加图书信息。
class User
searchkick
scope :search_import, -> { includes(:books) }
def search_data
{
books_count: books.count,
book_types: books.map(&:book_type)
}
end
end
class Book
after_commit :reindex_user
def reindex_user
user.reindex # or reindex_async
end
end
并搜索:
User.search("*", where: {books_count: 0})
User.search("*", where: {books_count: {gt: 0}})
User.search("*", where: {book_types: "Art"})