Как найти find() с include() в Rails 3

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

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

Ответ 1

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

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

Ответ 2

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

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

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

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

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

Ответ 3

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

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

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

Ответ 4

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

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