Ruby on rails 两个rails模型都与第三个模型具有habtm关系

Ruby on rails 两个rails模型都与第三个模型具有habtm关系,ruby-on-rails,model,has-and-belongs-to-many,Ruby On Rails,Model,Has And Belongs To Many,当它适用于多个模型时,我有一个关于has和属于许多人的问题。我已经看到了一些关于habtm的类似问题,涉及多个模型,但没有一个是这样的(它们通常适用于两个模型,而不是三个) 假设我有以下几个类: 学生 俱乐部 房间 学生habtm俱乐部——学生可以加入多个俱乐部,俱乐部有多个学生 Rooms habtm Clubs——一个房间可能有多个使用它的俱乐部,一个俱乐部可能使用多个房间 学生和房间之间没有直接关系 我不认为在同一个类(俱乐部类)中使用两个habtm关系有任何问题,但我可能遗漏了一些微

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

假设我有以下几个类:

  • 学生
  • 俱乐部
  • 房间
学生habtm俱乐部——学生可以加入多个俱乐部,俱乐部有多个学生

Rooms habtm Clubs——一个房间可能有多个使用它的俱乐部,一个俱乐部可能使用多个房间

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

我不认为在同一个类(俱乐部类)中使用两个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
class-Student
我假设在这种情况下,我也可以在一个或两个关系上使用:through

  • 是否存在任何已知问题
  • Rails中是否有其他我不想使用的模式

  • 你所发布的是正确的和优化的设计


    room和student之间没有相似之处,因此多态性并不合适,而且它们之间的关系是正确的。

    我认为你所做的根本没有任何问题。在单个模型中具有多个(不同的)HABTM关系是可以的。