У меня есть много ко многим отношениям для книг и авторов, таких как:
class Book < ApplicationRecord
has_many :books_authors, inverse_of: :author, dependent: :destroy
has_many :authors, through: :books_authors
end
class Author < ApplicationRecord
has_many :books_authors, dependent: :destroy
has_many :books, through: :books_authors
end
class AuthorsBook < ApplicationRecord
belongs_to :author
belongs_to :book
end
Теперь, чтобы получить все Books
с Authors
из ids: 1 and 3
Запрос выглядит так:
Book.joins(:authors).where(authors: {id: [1, 3]}).uniq
Book.joins(:books_authors).where(books_authors: {author_id: [1,3]}).uniq
Book.joins(:authors).where('authors.id IN (?)', [1,3]).uniq
Но я получаю книгу, чьи идентификаторы авторов 2,3,5
, что не должно быть так, поскольку в ней нет author
с идентификатором 1
.
Итак, как я могу получить книги только с указанными идентификаторами авторов?