同一模型内的关联?

问题描述 投票:0回答:1

我有一家模范公司。公司下设总部和分公司。它们具有完全相同的属性(并且不会改变)。总部可以有多个分支机构(可选关联)。分公司属于总部。

我想在 API 中显示关联,如下所示(注意:一些数据因不相关而被删除):

“数据”:{ “id”:“607424”, “类型”:“公司”, “属性”: { “商业注册数据”:{ “uid”:“US462745827168”, “名称”:“大公司有限公司”, },

“分支机构”:[ { “uid”:“US4852847292”, "name": "Big Company Ltd, 芝加哥分公司", “状态”:“活动”, “法律形式”:{ “id”:9, “姓名”: { "zh": "分支", }, “简称”: { "zh": "麸皮", } },

总部与分公司的关系如何体现?经过一番研究后我得出了这个想法:

  1. 两种模式:总部和分公司
  • 使代码变得更加复杂,但没有额外的好处
  1. 查询,因为名称遵循以下模式:某公司名称有限公司,分公司城市
  • 性能低下且容易出错
  1. 另一种带有公司外键的模型分支 好像很复杂

  2. 同一模型内的关联,根据我的研究,我认为这是可能的(虽然我从未使用过)

  3. 为模型公司添加一列 headquarter_id 到branch_offices

谢谢

ruby-on-rails activerecord
1个回答
0
投票

希望这会有所帮助

一流公司< ApplicationRecord has_many :branch_offices, class_name: "Company", foreign_key: "headquarter_id" belongs_to :headquarter, class_name: "Company", optional: true end

例如:

branch_office = Company.find_by(名称:“Big Company Ltd,芝加哥分公司”) 总部=分支机构.总部

总部 = Company.find_by(名称:“Big Company Ltd”) 分支机构 = 总部.分支机构

© www.soinside.com 2019 - 2024. All rights reserved.