Найти элементы пользователей через ассоциацию, используя Elasticsearch с Searchkick on Rails?

Я должен искать книги, пользователи имеют книги через авторов, чтобы иметь возможность искать только свои книги, не показывая книги других пользователей.

модель книги

has_many :authors
has_many :users, through: :authors

Я пытался искать, как описано здесь, но это не сработало.

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

Я считаю, что это не сработало, потому что books модель не имеет user_id

1 ответ

Решение

Вероятно, есть несколько способов сделать это. Вот один из них: поиск по индексу книг в searchkick, но только возврат книг, идентификатор которых совпадает с одним из пользователей 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}
Другие вопросы по тегам