Как сделать find () с include () в Rails 3 - PullRequest
42 голосов
/ 15 октября 2010

Я пытаюсь сделать что-то подобное, но это не работает.Как бы я сделал это в Rails 3?

Student.find(12).includes(:teacher)

Ответы [ 5 ]

73 голосов
/ 15 октября 2010

Вам просто нужно быть более осторожным с порядком методов в этом случае:

Student.includes(:teacher).find(12)
8 голосов
/ 15 июля 2012

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

Выполнение чего-то вроде @student = Student.includes(:teacher).where(:id => 12) возвращает массив, и поэтому использование чего-то вроде @student.id не работает.

Вместо этого вы можете сделать:

@student = Student.includes(:teacher).where(:id => 12).first

Хотя Student.includes(:teacher).find(12) должно работать, но вы можете использовать версию where, если вам нужен поиск по другим / нескольким полям.

1 голос
/ 24 января 2011
Student.includes(:teacher).where(:id => 12)

должно работать.

Можем ли мы увидеть ваши модели?

0 голосов
/ 29 мая 2019

Нет смысла использовать find с includes. Стремительная загрузка помогает нам загружать связанные записи объектов, чтобы предотвратить проблему n + 1. Только с одной записью вы никогда не столкнетесь с проблемой n + 1.

0 голосов
/ 16 октября 2010

Вы можете попробовать "где" вместо "найти":

Student.includes(:teacher).where(:id => 12)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...