2011-01-05 27 views
2

我在寻找关于如何设置两个模型Teacher和Subject的建议。一位教师可以有许多科目,一个科目可以有许多教师。在这两种模式之间的关系中需要考虑的另一件事是,教师可以创建一个主题并将其他教师添加到该主题。如何设置两个has_many关联的模型

我觉得我对基础知识的扎实建立每个模型:

为teacher.rb:

has_many :subjects 

为subject.rb中:

has_many :teachers 

和教师表应该有一个subject_id列,主题表应该有一个teacher_id列。

我不确定如何设置视图(和相应的控制器方法)以允许将教师添加到主题。

任何建议(或链接到示例),非常感谢。在这个确切的案例中,我一直无法找到任何东西。


当前设置:

  • 标准CRUD一个Student对象
  • 标准CRUD的项目对象

我可能失去了一些东西在如何配合这些简单模型在一起(除了将has_many改为habtm的部分之外)并将记录记录到subjects_teachers表中,并且我仍然找不到一个好例子...

+0

见这也:http://guides.rubyonrails.org/association_basics.html#the- has_and_belongs_to_many-association – Zabba 2011-01-05 05:50:52

回答

3

您需要在它们之间建立关系表。这是不可能的,有没有一个相对表

首先虽然是多对多的关系,它是一个has_and_belongs_to_many:科目和has_and_belongs_to_many:教师(通常被称为的habtm)

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

运行

rails g migration subjects_teachers 

开拓迁移:

create_table :subjects_teachers, :id => false do |t| # ID => FALSE = IMPORTANT 
    t.references :subject 
    t.references :teacher 
    # NO TIMESTAMPS 
end 

运行 rake db:migrate,你应该设置!

然后

看到这些railscasts用于设置你的控制器

http://railscasts.com/episodes/17-habtm-checkboxes

http://railscasts.com/episodes/47-two-many-to-many

+0

为什么有人删除我的railscasts链接?不赞赏 – sethvargo 2011-01-05 05:50:27

+0

我确实编辑了你的答案,不幸的是我没有注意到这些链接(奇怪,我知道,我很困惑,为什么我没有看到它!)。最后,道歉 - 未来会更加谨慎。 – Zabba 2011-01-05 07:47:23

+0

谢谢,非常有帮助的habtm。我显然错过了这个许多/许多协会的解决方案。上面提到的railscasts对于设置habtm也很有帮助,但是它们并没有提供任何对控制器代码的输入。我不能正确设计我的模型,因为添加主题时没有创建任何subject_teachers记录。我将编辑我的问题以包含有关我当前设置的更多信息 – daz13 2011-01-06 03:48:09

相关问题