ruby-on-rails - 来自 3 个不同表的 3 个 id 的多对多

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

我有 3 个模型:

  • 教师
  • 专长
  • 客房

  • 1名教师可以拥有许多专业知识;

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

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

    1 专长可以有很多老师;

    Expertise 和 Room 之间没有关系。

    我的链接表,这将是第四个模型,我存储多对多的地方有 3 列:
  • Teacher_id
  • 专业知识 ID
  • room_id

  • 教师登录后,他需要为他的专长选择不同的房间,因此他单击列出的他的专长之一,然后在新页面中出现复选框,其中包含他可以选择的房间。

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

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

    最佳答案

    A has and belongs to many 关系只存在于两个模型之间。所以在你的情况下,我的理解是你必须为这两个表做两个表,并且属于许多关系:

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

  • 如果 Room 和 Expertise 之间没有关系,则不应在同一张表中找到它们!

    关于ruby-on-rails - 来自 3 个不同表的 3 个 id 的多对多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24869281/

    相关文章:

    ruby-on-rails - Heroku托管的Rails应用的最佳搜索选项?

    ruby-on-rails - will_paginate NoMethodError

    ruby-on-rails - 设计不使用 rails 。 (未定义的局部变量或方法 `‘devise’ ' 对于 Gemfile)

    javascript - 选择类别然后显示类别.尺寸

    ruby-on-rails - 为 V8 Rails 安装 Nodejs 以减少使用

    ruby-on-rails - 双渲染错误轨

    ruby-on-rails - 我应该在 Ruby on Rails 中的哪里存储静态列表(例如州或城市)?

    sql - 在 Rails 中编写查询时查找空值

    c# - 使用SQLite DB在C#中创建Microsoft报表

    python - 从字符串中删除 "\n",但保留实际的换行符?