Найти элементы пользователей через ассоциацию, используя 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}