我在單個表繼承(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