首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails 5-带有两个引用相同对象的字段的模型

Rails 5-带有两个引用相同对象的字段的模型
EN

Stack Overflow用户
提问于 2016-10-03 11:47:51
回答 1查看 112关注 0票数 2

在我为学习RoR而开发的应用程序中,我有一个模型“文档”和一个模型“业务合作伙伴”。在“文档”模型中,我有两个字段(“发件人”和“接收者”),指的是“业务伙伴”模式。

如何用不同的字段对同一个目标进行两次belongs_to建模?迁移应该是什么?

相关问题:我如何为商业伙伴建立自己与it的关系模型?也就是说,一家公司有许多商业伙伴,但也可以成为商业伙伴。注:不属于同一记录(A公司不能与A公司(本身)有关系)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-03 11:57:33

假设您拥有sender_idreceiver_id列,用于Document模型上的发送方和接收方关系(即在documents表上),您可以这样做:

代码语言:javascript
复制
class Document < ActiveRecord::Base
  belongs_to :sender, class_name: "BusinessPartner"
  belongs_to :receiver, class_name: "BusinessPartner"
end

只要表中有这些列(如果您已经将它们命名为其他名称,只需将上面的senderreceiver替换为除_id部分之外的任何列名),就不会有特定的迁移。

然后,对于您的BusinessPartner模型:

代码语言:javascript
复制
class BusinessPartner < ActiveRecord::Base
  has_many :sent_documents, class_name: "Document", foreign_key: "sender_id"
  has_many :received_documents, class_name: "Document", foreign_key: "receiver_id"
end

在这里,sent_documents将获取documents表中的所有行,其中sender_idBusinessPartner的id匹配,对于received_documents类似。

更多信息在Rails文档

关于你的第二个问题,有一个Rails文档的部分描述这一点,它被称为“自我连接”。然而,考虑到你想要建立一个多到多的关系,你将需要一个稍微特殊的表格安排。有关如何设置该安排的一些详细信息,请参见这就是答案。实际上,这本身就是一个有点棘手的话题,如果你对细节感兴趣,我建议问一个单独的问题(尽管这篇文章很好地回答了这个问题)。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39830869

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档