Мои модели:
class Student
has_many :grades
has_many :courses, :through => :grades
end
class Grades
belongs_to :student
belongs_to :course
end
class Course
has_many :grades
has_many :students, :through => :grades
end
На странице просмотра для студента мне нужно показать все курсы и связанные с ними оценки (если есть)
Student: Joe Blow
Course Grade
Sociology A
Biology B
Chemistry
...
Я использую левое соединение для обработки этого запроса
@courses = Course.find(:all,
:joins => "as c left join grades g on c.id = g.grade_id and g.user_id = 1",
:select => "c.id, c.name, g.grade")
Когда я выполняю этот запрос, если есть соответствующая оценка, все в порядке, но если для курса нет соответствующей оценки, даже если он возвращает запись курса, он возвращает ноль для идентификатора курса, поэтому Я озадачен, почему это так. Если я запускаю прямой запрос SQL, он возвращает идентификатор курса для всех курсов, независимо от совпадения оценок. Я использую метод проверки, чтобы увидеть результаты
logger.debug @courses.first.inspect + ", " + @courses.first.grade.inspect
Я также заметил странность в ссылках на оценки, должен ли я использовать единственное или множественное число оценок?