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_manyUser
?我是否必须进行迁移才能重新创建表并添加关系
谢谢你的帮助 多对多关联的推荐方法是“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希望这两个表按词汇顺序列出
- 一对多关系(如您最初尝试时得到的结果)将引用保留在其中一个表中,而多对多关系需要第三个联接表,如上所示