Автор has_many Books
Books has_many Содержимое
Если я хочу найти какой-то дубликат раздела, например: "интереса", во всех книгах и всех авторах.И я также хотел бы видеть их book.title и author.name.
content_section = Content.where(:section => "interest").select("book_id, section ";
books = Books.where(:id => content_section.map(&:book_id)).select("author_id, title")
authors = Author.where(:id => books.map(&:author_id)).select("name")
Вопрос1: Есть ли лучший способ добиться этого?(в проблеме производительности или некоторых других)
Вопрос 2: Есть ли способ сделать так, чтобы разделы, книги и авторы объединялись в таблицу?(на стороне ruby или MySQL.)
- Вопрос3: что означает content_section.map (&: book_id)?Интересно, например, из-за &: book_id
этот SQL (MySQL) создаст большую таблицу, поэтому мне не нужно объединять все результаты в ruby.И мне легче повторять в шаблонах представлений.Но это производительность очень низкая, так как присоединились три таблицы.
select * from authors, books, contents
where authors.id = books.author_id and books.id = content.book_id and content.section = "interest"
Любой комментарий приветствуется.Спасибо.
** обновление **
после ссылки: введите описание ссылки здесь и введите описание ссылки здесь
Я пытаюсь добавить модель:
класс Автор
has_many: content, through => book
end
, затем я попытался это в консоли:
author.joins (: content) .where (: section => Interest)). Select ("name, title, section:);
Я получаю SQL:
выберите имя, заголовок, раздел из автора......