我正在尝试在 Rails 中建立多态关系并且遇到了一些困难。这是我的数据模型:
class Order
has_many :order_items
end
class OrderItem
belongs_to :order
end
class PhysicalItem < OrderItem
end
class VirtualItem < OrderItem
end
PhysicalItem 和 VirtualItem 在它们的模型中有足够的差异以保证被拆分到它们自己的表中。所以,我设想有:
订单表
一个物理项目表
一个 virtual_items 表
具有 item_type = ["PhysicalItem" or "VirtualItem"] 和对应表中匹配行的 item_id 的 order_items 表。
我最终希望能够编写这样的代码:
order = Order.new
physical_item = PhysicalItem.new
virtual_item = VirtualItem.new
order.order_items << physical_item
order.order_items << virtual_item
puts order.order_items
# Should list out the physical item and then the virtual item.
理论上看起来很简单,但总体上看来对这种结构的支持并不多。有人对使用 ActiveRecord 在 postgresql 数据库中实现这一点有任何想法吗?