0
我的模型:Rails的SQL左連接
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爲零,所以我很困惑爲什麼這樣。如果我運行一個直接的SQL查詢,它將返回所有課程的課程標識,而不考慮年級匹配。我使用的檢查方法看結果
logger.debug @courses.first.inspect + ", " + @courses.first.grade.inspect
我也注意到在引用級的怪胎,我應該使用級的單數或複數?
使用:條件並添加g.user_id IS NULL沒有工作,也沒有不匹配等級拿起課程。 – Bob 2009-10-28 22:41:45