Запрос, где метод объекта равен заданному значению c - PullRequest
0 голосов
/ 28 апреля 2020

У меня есть таблица с именем Notes. Вы можете вызвать метод с именем «book» для заметки (книга не является столбцом в таблице заметок).

Если я сделаю Note.first.book.author.id, он даст идентификатор автора. однако, при попытке запросить Notes, чтобы найти все заметки, где id автора = '123', где я пытаюсь

Note.where(book.author.id = '123'), я получаю сообщение об ошибке неопределенная локальная переменная или метод `book '

Могу ли я не запрашивать использование метода таким образом? Каков лучший способ go об этом?

Ответы [ 2 ]

0 голосов
/ 28 апреля 2020

Предположим, что модель Book относится к столбцу от Note до book_id внутри таблицы notes, а author_id - это столбец внутри таблицы books, тогда запрос должен выглядеть следующим образом:

Note.includes(:book).where(books: { author_id: 123 })

Вот руководство https://guides.rubyonrails.org/active_record_querying.html

0 голосов
/ 28 апреля 2020

Попробуйте вот так

Note.joins(book: :author).where(book: { author: { id: 123 } })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...