Ruby on Rails: отношения один ко многим, но я хочу получить только студентов и 1 домашнее задание - PullRequest
0 голосов
/ 15 октября 2011

У меня 2 предмета, студент и домашняя работа.Это отношение один-ко-многим, когда у студента может быть много домашних заданий

Я пытаюсь использовать метод .find для извлечения всех учащихся и только одной домашней работы, которую он имеет.

Я знаю, что могу использовать Student.find (: all,: include =>: домашние задания).Но это вернет мне студента и все это домашние задания.

Ответы [ 2 ]

0 голосов
/ 15 октября 2011

Если вы не заботитесь о производительности, тогда ваше решение в порядке. Получить все записи и просто использовать первый в ваших представлениях или контроллерах

Если вы заботитесь о производительности (выбор большого количества объектов стоит дорого), тогда вы можете добавить другое отношение first_homework или latest_homework (добавление нового столбца latest_homework_id в схему вашей таблицы) и заполнять его правильным идентификатором каждый раз, когда студент назначил новое домашнее задание (или домашнее задание выполнено, или когда это имеет смысл для вашей логики приложения)

0 голосов
/ 15 октября 2011

Если ваше отношение «один ко многим», вы не можете выбрать только одно, не решив, каким оно должно быть (например, первое, если вы упорядочите их по идентификаторам).Если это так, вы можете использовать метод #first для отношений:

Student.find(:all, :include => :homeworks).each {|student| student.homeworks.first}

Если вы имеете в виду, что вы извлекаете из базы данных только один предмет для каждого учащегося, это больше проблема SQL.Вам придется написать предложение «ON», в котором будет выбран отдельный предмет по вашему критерию.

...