2011-02-12 40 views
1

我有3個表格:Student,SubjectScore
每個學生可以添加3個科目(物理,數學和化學)的標誌。
(student_id + subject_id)的組合添加到Score表中。即,捕獲sudent「1」增加了「數學」與實際分數(比如範圍0-100)標記Ruby on Rail - 獲取並顯示Dymanic下拉格式

student id : subjectid  Score 
    1   Mathematics 95 

AddScore有一個「主題」下拉菜單。從「主題」表中顯示。

當學生想要添加第二個主題標記時,在添加頁面中,他不應該在下拉菜單中顯示previoys添加的主題。

誰能告訴我如何做到這一點?

回答

0

是的,你可以通過以下的方式做到這一點(Rails的3.0):

class Subject 
    scope :not_enrolled_in, lambda{ |user| where("NOT EXISTS(SELECT id FROM scores WHERE user_id = ? AND subject_id = subjects.id)", user.id) } 
end 

或者這種方式在Rails的2.X:

class Subject 
    named_scope :not_enrolled_in, lambda{ |user| { :conditions => ["NOT EXISTS(SELECT id FROM scores WHERE user_id = ? AND subject_id = subjects.id)", user.id] } } 
end 

然後,您可以得到的主題列表當前用戶沒有參加這樣的:

Subject.not_enrolled_in(current_user).all 

然後,您可以在您選擇的HTML代碼中使用此列表。

+0

對不起。由於我對此感到陌生,如果您提到需要添加這些文件的文件,這將非常棒。 – Ruby 2011-02-14 08:47:40