【发布时间】:2010-07-06 18:22:12
【问题描述】:
我们的架构中有 Supplier、Distributor、Vendor、Buyer 等模型。这些实体具有一些共同的属性(如名称、描述、销售办事处等),但大多数情况下它们具有不同的架构,具有不同的 has_many :through 关联(供应商有许多 stock_keeping_units ,其他没有)因为它们需要被折叠到单独的模型。
我们在系统中也有各种类型的Events,例如合作伙伴活动、分销活动、采购活动等。
如何创建 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,但我不确定这是否适用于当前的问题陈述。
【问题讨论】:
标签: ruby-on-rails ruby polymorphism multiple-inheritance