2012-08-08 293 views
0

我有兩個型號爲主體,教師
主題模型Ruby on Rails的模型

class Subject < ActiveRecord::Base 
    belongs_to :sclass 
    has_many :subject_teachers 
    attr_accessible :sub_name 
end 

和教師模型

class Teacher < ActiveRecord::Base 
    # attr_accessible :title, :body 
    has_many :sclass_teachers 
    has_many :subject_teachers 
    attr_accessible :fname, :lname, :mob, :email 
end 

,並創建了連接表的subject_teacher爲多對多的關係

class SubjectTeacher < ActiveRecord::Base 
    belongs_to :subject 
    belongs_to :teacher 
end 

但我想訪問教師n主題模型/表中的ame我該怎麼做。 什麼,在哪裏我寫的完美代碼,使我得到具體的教師姓名具體 主題,因爲有多對多的關係?

+0

你的意思是你需要老師的名字與主題,她需要在一個特定的類? – 2012-08-08 09:53:47

+0

是的,我需要這一點,但不是在特定的類,我說一個老師可以教很多科目,一個主體可以通過許多教師 – Shrikant1712 2012-08-08 10:22:46

回答

1

你會做:

has_many :teachers through => :subject_teachers 

爲@Hugo說

+0

採取我加入這個定行insted的的:在我的主題模式「的has_many subject_teachers」但我怎麼能訪問老師的名字PLZ給我一些暗示 – Shrikant1712 2012-08-08 10:15:47

+0

只是Subject.find(1)。教師 – andy 2012-08-08 13:07:51

0

你說的是有點怪:你建立一個多對多的關係,並且需要特定的老師課程。所以對於多對多的關係,你可以得到一個教師名單。從這個列表中你可以拿第一個。但是如果你知道最多隻有一位老師是一個主題的話,那麼只需一個has_many就更方便了。

您可以通過使用@ subject.subject_teachers.teachers,其中@subject是一個主題實例訪問教師。

如果使用具有一對多,和屬於一對多的關係,則可以省略中間階級。你只需要這種關係就有額外的數據,比如日期和時間。