2012-08-08 253 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是一个主题实例访问教师。

如果使用具有一对多,和属于一对多的关系,则可以省略中间阶级。你只需要这种关系就有额外的数据,比如日期和时间。