2011-01-05 26 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

相關問題