从3个不同的表中有3个ID的多对多

时间:2014-07-21 15:50:13

标签: ruby-on-rails sqlite ruby-on-rails-4 many-to-many has-many-through

我有3个型号:

  • 教师
  • 专业方案
  • 房间

1名教师可以有很多专业知识;

1位老师可以有很多房间;

1个房间可以有很多老师;

1个专业知识可以有很多老师;

专业知识和会议室之间不需要关系。

我的链接表,这将是第四个模型,我存储多对多有3列:

  • teacher_id
  • expertise_id
  • ROOM_ID

一旦老师登录,他需要为他的专业知识选择不同的房间,所以他点击了他列出的一个专业知识,然后在新页面中有复选框,他可以选择房间。

问题在于,当我保存教师时,我会在Link表中创建一条记录,但是我失去了老师的所有专业知识。因为我只有1个expertise_id,所以关系老师< - >专业知识删除了所有专业知识,只保留了用于分配房间的专业知识。

有关如何管理这些模型的任何提示? 我尝试使用has_many,但显然犯了一些我无法找到的重大错误。

1 个答案:

答案 0 :(得分:1)

一个拥有并且属于许多关系只在两个模型之间。所以在你的情况下,我理解的是你必须为两个表做两个表并且属于许多关系:

  • 老师和专家之间(teacher_id,expertise_id)

  • 教师和房间之间(teacher_id,room_id)

如果房间与专业知识之间没有关系,则不应在同一张表中找到它们!