两个轨道型号都与第三个型号具有habtm关系

时间:2012-08-17 22:02:35

标签: ruby-on-rails model has-and-belongs-to-many

我有一个关于has的问题,当它适用于多个模型时属于许多。我已经看到了几个关于habtm与其他类似问题的问题,但没有一个像这样(它们通常适用于两个模型,而不是三个模型)。

假设我有以下类:

  • 学生
  • 俱乐部
  • 房间

学生habtm俱乐部 - 学生可以加入多个俱乐部,俱乐部有多个学生。

客房habtm俱乐部 - 一个房间可能有多个俱乐部使用它,俱乐部可能会使用多个房间。

学生和房间之间没有直接的关系。

我认为在同一个班级(俱乐部班级)中使用两个habtm关系没有任何问题,但我可能会遗漏一些细微之处。

class Student < ActiveRecord::Base
  has_and_belongs_to_many :clubs
end

class Clubs < ActiveRecord::Base
  has_and_belongs_to_many :students
  has_and_belongs_to_many :rooms
end

class Rooms < ActiveRecord::Base
  has_and_belongs_to_many :clubs
end

我假设在这种情况下我也可以使用:通过一个或两个关系。

  1. 有任何已知问题吗?
  2. Rails中是否有其他模式我应该使用而不是我想到的?

1 个答案:

答案 0 :(得分:0)

您发布的内容是正确且优化的设计。

房间和学生之间没有相似之处,所以多态不适合,关系也是正确的。