如何在 Rails 中正确构造和关联委托类型及其关联?

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

为了不拥有多个相同的记录/类似的记录,我正在使用

delegated_type
进行调查,但是我对我的关联应该/将如何工作感到困惑。

我有一张表,

Item
,它使用委托来继承
InvoiceItem
OrderItem
NoteItem
BasketItem
.

我有

item
PurchaseOrder
DeliveryNote
Invoice
的父表。

  • A
    PurchaseOrder
    将有很多项目,其中
    itemable
    OrderItem
    BasketItem
    .
  • A
    DeliveryNote
    会有很多项,其中
    itemable
    NoteItem
  • 一个
    Invoice
    会有很多项,其中
    itemable
    InvoiceItem

item.rb

delegated_type :itemable, primary_key: :uuid, types: ["OrderItem", "InvoiceItem", "NoteItem", "BasketItem"]

NoteItem/InvoiceItem/OrderItem/BasketItem

has_one :item, as: :itemable, dependent: :destroy

现在我不确定

Item
是否应该属于
PurchaseOrder
或者继承表(
OrderItem/BasketItem
)是否应该是关系。

例子:

PurchaseOrder.rb

has_many :order_items, -> { where(itemable_type: OrderItem) }, class_name: "Items",
                                                                            foreign_key: "purchase_order_id",
                                                                            inverse_of: :purchase_order,
                                                                            dependent: :destroy

OrderItem.rb

belongs_to :purchase_order, class_name: "PurchaseOrder"

我相信第一个选项应该是正确的方法,但我不确定

belongs_to
如何为子项目工作,
OrderItem
belong_to
一个
PurchaseOrder
?这将导致
PurchaseOrder
有很多项目,其中
itemable
OrderItem
,但只有
OrderItem
属于
PurchaseOrder
,但也许这是正确的,我误解了
delegated_type
文档。

谢谢。

文档:

版本: Rails

7.0.4
、Ruby
3.0.1
和 PGSQL
14

ruby-on-rails ruby activerecord polymorphic-associations delegation
© www.soinside.com 2019 - 2024. All rights reserved.