我在这里碰到了一堵砖墙,试图用我正在研究的应用程序组织一些模型和关联。任何想法都会受到欢迎!
该应用以consultations
,invoices
和prescriptions
为中心。它们都有关联的productItems
(基本上是产品,客户,数量等的组合)。
咨询将总是与相应的发票和处方共享相同的产品。问题出在了,但并非所有发票或处方都与咨询相关联。可以有独立的发票或处方。
在这种情况下,我很难找到一个共同的“祖先”,因为我想要一个更好的词,我可以保留所有的共享数据,然后在不同的模型中使用相同的参考。
作为替代方案,我考虑为每个协会创建单独的模型,如下所示,但我担心的是重复:
ConsultationProductItem
- belongs_to animal
- belongs_to product
- belong_to consultation
InvoiceProductItem
- belongs_to animal
- belongs_to product
- belong_to invoice
PrescriptionProductItem
- belongs_to animal
- belongs_to product
- belong_to prescription
看起来很脆弱,因为这些是在多个模型中共享的相同数据。
通过上述设置,我还必须定期拍摄属于咨询的各种物品,并将其复制到相应的发票或处方中。
我觉得我已经绕圈子了,我目前正在用Rails或Meteor / Mongo构建的应用程序的后端之间徘徊,我觉得Rails是坚如磐石的协会。通常很擅长执行,但似乎无法弄清楚使用哪种技术。任何想法都非常感激!编辑:
我现在想知道我是否可以创建一个“祖先”型号,如下所示:
ProductGroup
- id
Consultation
- productGroup
Invoice
- productGroup
Prescription
- productGroup
ProductItem
- belongs_to product_group
- animal
- product
- quantity
答案 0 :(得分:0)
你可以进行多态实现。
的 ConsultationProductItem
强>
- has_many:productItem,as:product
<强> InvoiceProductItem
强>
- has_many:productItem,as:product
<强> PrescriptionProductItem
强>
- has_many:productItem,as:product
<强> ProductItem 强>
- belongs_to:product,polymorphic:true