模型的多态抽象和轨道中的潜在MI?

时间:2010-07-06 18:22:13

标签: ruby-on-rails ruby polymorphism multiple-inheritance

我们的架构中有供应商分销商供应商买方等型号。这些实体有一些共同的属性(如名称,描述,销售办公室等),但大多数情况下它们具有不同的has_many的不同模式:通过关联(供应商有许多stock_keeping_units,其他没有)因为他们需要折叠到单独的模型。

我们在系统中也有各种类型的事件,例如合伙活动,经销活动,采购活动等。

如何创建 is_a 关系并将这些买方,供应商等模型抽象为公司模型,并在创建活动时(例如合伙活动)简单地说公司1与公司2合作不用担心公司类型是什么,所以我可以在我的表格上做一些类似的事情提交事件:

  <p>
    <%= f.label "Company 1" %>
    <%= f.collection_select :partnering_company_id_1, Company.all ,:id, :name, { :default => true} %>
  </p>

我愿意在需要时分享架构的更多细节。这可能吗?我最近遇到了this博客文章,其中介绍了MTI,但我不确定这是否适用于当前的问题陈述。

2 个答案:

答案 0 :(得分:0)

我使用单表继承。我相信当你拥有非常相似属性的模型时,这是最好的解决方案。

例如,对于Events,您只有一个表(events),该表必须有type列。

没有关于STI的好文档(至少我没有找到它),但是this帖子和this一个应该有所帮助......

答案 1 :(得分:0)

我不知道这是否仍然相关,但我最近致力于MTI解决方案。这很简单,效果很好,看起来就像你需要的那样(编辑):)

考虑一下:http://peterhamilton.github.com/citier