Ruby on rails 如何在两个表上建立多个关系?

Ruby on rails 如何在两个表上建立多个关系?,ruby-on-rails,associations,Ruby On Rails,Associations,我正在尝试在创建时与一个表建立很多关系,并将其添加到另一个已经创建的表中 我的User表已经没有关系了 我想创建一个具有关系的Pro\u用户 问题是一个用户可以有多个Pro\u用户,一个Pro\u用户也可以有多个用户 所以这两个表都需要一个有很多对吗 所以我想到的是 rails g model pro\u用户名:字符串电子邮件:字符串密码\u摘要:字符串用户:参考资料 但这不是正确的做法,它正在做一个属于的从Pro\u用户到用户 还有,我应该如何在现有表中添加has_manyUser?我是否必须

我正在尝试在创建时与一个表建立很多关系,并将其添加到另一个已经创建的表中

我的
User
表已经没有关系了

我想创建一个具有关系的
Pro\u用户

问题是一个
用户
可以有多个
Pro\u用户
,一个
Pro\u用户
也可以有多个
用户

所以这两个表都需要一个
有很多
对吗

所以我想到的是

rails g model pro\u用户名:字符串电子邮件:字符串密码\u摘要:字符串用户:参考资料

但这不是正确的做法,它正在做一个
属于
的从
Pro\u用户
用户

还有,我应该如何在现有表中添加has_many
User
?我是否必须进行迁移才能重新创建表并添加关系


谢谢你的帮助

多对多关联的推荐方法是“
has\u many\u to
”方法。这允许您在以后需要更多数据时将其他列添加到联接表中。您需要一个连接表,该表至少有两个用户和ProUsers表的引用列以及标准id列。 (请参阅:)

因此,用户和ProUser表中不会有任何引用列。相反,您将制作第三张桌子,名为BoatsAndPros(随意称呼),并执行以下操作:

然后在相应的boats_和_pros.rb模型文件中添加:

belongs_to :user
belongs_to :pro_user
 has_many :boats_and_pros
 has_many :pro_users, through: :boats_and_pros
user.rb
文件中,您将添加:

belongs_to :user
belongs_to :pro_user
 has_many :boats_and_pros
 has_many :pro_users, through: :boats_and_pros
在您的
pro_user.rb
模型文件中,您将添加

has_many :boats_and_pros
has_many :users, through: :boats_and_pros
两个关键要点是:

  • “oldschool”
    has_和_belient_to_many
    方法仍然很好,但是这里不允许像has_many_through方法那样增加空间,您需要特别命名表pro_users,因为Rails希望这两个表按词汇顺序列出
  • 一对多关系(如您最初尝试时得到的结果)将引用保留在其中一个表中,而多对多关系需要第三个联接表,如上所示