开发者

How to set up two models having a has_many association with each other

I'm looking for a suggestion on how to set up two models, Teacher and Subject. A Teacher can have many Subjects, and a Subject can have many Teachers. Another thing to consider in the relationship between the two models is that a Teacher can create a Subject and add other Teachers to the Subject.

I think I'm solid on the basics of the set up for each model:

for teacher.rb:

has_many :subjects

for subject.rb:开发者_运维问答

has_many :teachers

and the teachers table should have a subject_id column and the subject table should have a teacher_id column.

What I'm not sure about is how to set up the views (and corresponding controller methods) to allow the addition of a Teacher to a Subject.

Any suggestions (or links to examples) are greatly appreciated. I haven't been able to find anything on this exact case.


current set up:

  • standard CRUD for a Student object
  • standard CRUD for a Project object

I'm likely missing something simple in how to tie these models together (other than the part of changing has_many to habtm) and getting records into the subjects_teachers table, and I still can't find a good example...


You need to build the relational table between them. It's impossible to have a many-many relationship without a rel table

First off though, it's a has_and_belongs_to_many :subjects and has_and_belongs_to_many :teachers (commonly referred to as habtm)

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

run

rails g migration subjects_teachers

open up the migration:

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

run rake db:migrate and you should be set!

then

see these railscasts for setting up your controllers

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

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

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜