2012-10-18 43 views
0

所以我有一個HABTM我的學生和教室之間的關係使用一個名爲ClassroomStudents的連接表來處理許多屬於許多教室的學生。Rails 3 HABTM加入表格再加上額外的領域

最近的商業需求出現了,學生們應該可以向會議室請求會員資格,所以我想我只是創建一個包含classroom_id和student_id的邀請表,但很快意識到我的課堂學生表已經處理了這個問題,所以我想到了只需重新使用此表。我添加了一個布爾接受的字段到我的課堂學生表中,真實地表示已經確認的會員資格和假的默認會員資格。

有多種方式可以將學生添加到教室中,其中一種方法是在建立關係時讓他們自動被接受。所以,用下面的代碼:

@classroom << @students 

我怎麼能還指定這個布爾接受字段,而不是虛假的默認真正的價值?

回答

1

您可以使數據庫中的默認值爲true。例如,寫遷移,看起來像這樣

class MakeAcceptedDefaultToTrue < ActiveRecord::Migration 
    def change 
    change_column :classroom_students, :accepted, :boolean, :default => true, :null => false 
    end 
end 
+0

我曾認爲,由於好,但是當我在做一個新的請求加入課堂將我必須手動創建連接表的記錄,並設置接受價值假? (而不是像'@classroom << @ student'一樣) – Noz

+0

哦,你只是問如何讓這個值不是默認值,不管默認值是什麼?對不起,不太明白你的問題。 – declan

+0

是的,你必須手動完成。如果你發現自己在多個地方做事,你可以用輔助方法包裝它。 – declan