我在单个表继承(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
将使用AR关注的想法,并将共享行为放在那些干燥的东西。感谢您的反馈! – daino3