2012-08-16 56 views
0

我創建了許多到許多教師和Sclass的協會。 ClassTeacher是連接表名稱。訪問多對多關係中的數據

class Teacher < ActiveRecord::Base 

    has_many :class_teachers 
    has_many :Sclasses, :through => :class_teachers 

    attr_accessible :teacher_id 
    attr_accessible :tname 
    attr_accessible :mob 
    attr_accessible :email 
end 



class Sclass < ActiveRecord::Base 

    set_primary_key :year 

    has_many :class_teachers 
    has_many :teachers, :through => :class_teachers 

    attr_accessible :year 

end 


class ClassTeacher < ActiveRecord::Base 

    belongs_to :teacher 
    belongs_to :sclass 

    attr_accessible :year 
    attr_accessible :teacher_id 
end 

我有tlist.html.erb,tnew.html.erb在查看 - >文件夾的教師,同樣我也slist.html.erb,snew.html.erb鑑於 - > sclasses文件夾。

當我爲老師添加一條記錄時,它也應該要求多年並保存記錄。同樣,一年它應該要求teacher_ids並保存記錄。我該怎麼做?這些記錄將保存在哪裏?

回答

0

我不確定這是否會回答您的問題,但是當您建立多對多關係時,模型會獲取一些名爲[association_name] _ids的「虛擬」屬性。因此,在您的情況下,Sclass模型將具有teacher_ids屬性,並且教師模型將具有sclass_ids

所以,例如,如果你想與教師ID爲1,2和3分配給你可以這樣做第一的sclass:

sclass = Sclass.first 
sclass.teacher_ids = [1, 2, 3] 
sclass.save 

在表單中做到這一點你可能想要的東西像排名爲sclass[teacher_ids][]的複選框(創建/編輯Sclass時),如下所示:

<% for teacher in Teacher.all -%> 
    <%= checkbox_tag "sclass[teacher_ids][]", teacher.id %> 
<% end -%>