0

我有两个模型作为主题和教师
主题模型

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

但我想在主题模型/表格中访问教师姓名,我该怎么做。我在哪里编写了完美的代码,以便我获得特定主题的特定教师姓名,因为存在多对多关系?

4

3 回答 3

1

你会这样做:

has_many :teachers through => :subject_teachers

正如@Hugo 所说

于 2012-08-08T09:40:12.177 回答
0

您可以使用 has_many :through 关系从主题访问教师数据

http://guides.rubyonrails.org/association_basics.html#the-has_many-through-association

于 2012-08-08T09:12:42.620 回答
0

你说的有点奇怪:你建立了多对多的关系,并且需要一个特定的老师来教授一个科目。因此,对于多对多关系,您可以获得教师列表。从该列表中,您可以选择第一个。但是,如果您知道一门学科最多只有一位老师,那么只需一个 has_many 就方便多了。

您可以使用@subject.subject_teachers.teachers 访问教师,其中@subject 是一个主题实例。

如果使用 has-many-and-belongs-to-many 关系,则可以省略中间类。您只需要该关系具有其他数据,例如日期和时间。

于 2012-08-08T09:16:16.177 回答