【发布时间】:2016-01-01 15:13:58
【问题描述】:
我在使用单表继承 (STI) 数据模型时遇到问题,其中模型可以是其中一种类型或两者兼有。我可以添加第三种类型,类似于TradingCompanyClearingMember,但我需要将两种模型中的代码复制到第三种类型中。这变得特别困难的是定义多态关系。是否有更简单/更好的方法/替代方法可以考虑对这种行为进行建模?
class Company < ActiveRecord::Base
validates :type, inclusion: %w(TradingCompany ClearingMember TradingCompanyAndClearingMember)
end
class TradingCompany < Company
has_many :traders, as: :tradeable
belongs_to :clearing_member
end
class ClearingMember < Company
has_many :trading_companies
has_many :contacts
end
class TradingCompanyAndClearingMember < Company
# copied clearing member relationships
has_many :trading_companies
has_many :contacts
# copied trading company relationships
has_many :traders, as: :tradeable
belongs_to :clearing_member
end
class Trader
belongs_to :tradeable, polymorphic: true
end
【问题讨论】:
标签: ruby-on-rails polymorphism data-modeling single-table-inheritance