Activerecord 如何建立两个相互关联的模型

Activerecord 如何建立两个相互关联的模型,activerecord,ruby-on-rails-3,has-and-belongs-to-many,Activerecord,Ruby On Rails 3,Has And Belongs To Many,我正在寻找一个关于如何建立两个模型的建议,教师和学科。一个老师可以有很多科目,一个科目可以有很多老师。在这两种模式的关系中要考虑的另一件事是,教师可以创建一个主题,并添加其他教师的主题。 我认为我对每种车型的基本设置都很了解: 对于teacher.rb: has_many :subjects 对于subject.rb: has_many :teachers 教师表应该有一个主题id列,主题表应该有一个教师id列 我不确定的是如何设置视图(以及相应的控制器方法)以允许在主题中添加教师 非常感谢

我正在寻找一个关于如何建立两个模型的建议,教师和学科。一个老师可以有很多科目,一个科目可以有很多老师。在这两种模式的关系中要考虑的另一件事是,教师可以创建一个主题,并添加其他教师的主题。 我认为我对每种车型的基本设置都很了解:

对于teacher.rb:

has_many :subjects
对于subject.rb:

has_many :teachers
教师表应该有一个主题id列,主题表应该有一个教师id列

我不确定的是如何设置视图(以及相应的控制器方法)以允许在主题中添加教师

非常感谢您的任何建议(或示例链接)。我没能找到关于这个案子的任何消息


当前设置:

  • 学生对象的标准积垢
  • 项目对象的标准CRUD

在如何将这些模型联系在一起(除了将has_许多更改为habtm的部分)以及如何将记录放入主题教师表中,我可能缺少一些简单的东西,我仍然找不到一个好的例子

您需要在它们之间构建关系表。没有关系表,不可能有很多很多关系

首先,它是一个has_和_属于_many:科目,has_和_属于_many:教师(通常称为habtm)

开放迁移:

create_table :subjects_teachers, :id => false do |t| # ID => FALSE = IMPORTANT
  t.references :subject
  t.references :teacher
  # NO TIMESTAMPS
end
跑 rakedb:migrate,你应该被设置

然后

有关设置控制器的信息,请参见这些railscasts


为什么有人删除了我的railscasts链接?我确实编辑了你的答案,不幸的是我没有注意到这些链接(奇怪,我知道,我很困惑为什么我没有在那里看到它!)。最后,道歉-以后会更加小心。谢谢-对habtm非常有帮助。很明显,我没有将此作为多/多关联的解决方案。提到的railscasts也有助于设置habtm,但是它们实际上没有向控制器代码提供任何输入。我不能让我的模型设计得很好,因为在添加一个主题时,我不会创建任何主题和教师记录。我将编辑我的问题,以包含有关我当前设置的更多信息。另请参见:
create_table :subjects_teachers, :id => false do |t| # ID => FALSE = IMPORTANT
  t.references :subject
  t.references :teacher
  # NO TIMESTAMPS
end