我们的架构中有供应商,分销商,供应商,买方等型号。这些实体有一些共同的属性(如名称,描述,销售办公室等),但大多数情况下它们具有不同的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,但我不确定这是否适用于当前的问题陈述。
答案 0 :(得分:0)
我使用单表继承。我相信当你拥有非常相似属性的模型时,这是最好的解决方案。
例如,对于Events
,您只有一个表(events
),该表必须有type
列。
答案 1 :(得分:0)
我不知道这是否仍然相关,但我最近致力于MTI解决方案。这很简单,效果很好,看起来就像你需要的那样(编辑):)