【发布时间】:2009-10-24 18:36:26
【问题描述】:
我的模型:
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")
当我运行这个查询时,如果有匹配的成绩,一切都很好,但如果没有匹配的课程成绩,即使它返回课程记录,它也会为课程 ID 返回 nil,所以我我很困惑为什么会这样。如果我运行一个直接的 SQL 查询,它会返回所有课程的课程 ID,而不管成绩是否匹配。我正在使用inspect方法查看结果
logger.debug @courses.first.inspect + ", " + @courses.first.grade.inspect
我还注意到在引用成绩时有一个奇怪的地方,我应该使用成绩单数还是复数?
【问题讨论】:
标签: sql ruby-on-rails