我想在Rails中設置一個多態關係,並且遇到了一些困難。這裏是我的數據模型:has_many在Rails中的多態/繼承
class Order
has_many :order_items
end
class OrderItem
belongs_to :order
end
class PhysicalItem < OrderItem
end
class VirtualItem < OrderItem
end
PhysicalItem和VirtualItem在他們的模型足夠的差異,以保證被拆分到自己的表。所以,我設想有是:
訂單表
一個physical_items表
一個virtual_items表
一個ORDER_ITEMS表ITEM_TYPE = [ 「PhysicalItem」 或 「VirtualItem」]和ITEM_ID相應表中的匹配行。
我最終希望能夠寫出這樣的代碼:
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數據庫中實現這個想法?
當'PhysicalItem'和'VirtualItem'繼承產品時,我在列表中看不到產品模型?它在哪裏適合所有這些? – jvperrin
我想我並不真的需要產品模型 - 我唯一能從中得到的是查詢order.products,然後檢索一堆混合的PhysicalItems和VirtualItems。 –
另外,我編輯了我的問題,以反映我更新的對象名稱 - 對於之前的混淆抱歉。 –