在 Rails 上使用带有 Searchkick 的 Elasticsearch 通过关联查找用户项目?

Find users items through association using Elasticsearch with Searchkick on Rails?

我必须搜索书籍,用户通过作者拥有书籍需要能够只搜索他们的书籍而不显示其他用户的书籍。

书籍型号

has_many :authors
has_many :users, through: :authors

我尝试按照描述进行搜索 但没有成功。

@Books = Book.search "*", where: { user_id: current_user.id}

我认为它不起作用,因为 books 模型没有 user_id

您可能有几种方法可以做到这一点。 这是一个:在 searchkick 中搜索图书索引,但只有 return 其 ID 与用户之一匹配的图书 book_ids

用户模型

# assuming you have:
has_many :books, through: :authors

控制器中

# change your where clause to filter based on book id
@Books = Book.search "*", where: { id: current_user.book_ids}