我正在使用Ruby on Rails 3,我想知道一个真实世界的例子(或更多)和一些建议,当我应该\ \必须使用实现here at the Polymorphic Association paragraph的多态关联和单表继承的组合。
答案 0 :(得分:1)
根据我的经验,多态关系=好,STI = PainInTheArse。
我从来没有见过一个不会变成令人困惑的混乱的STI例子。
如果你有不同的东西与一个或多个其他类具有相同的关系,那么使用他们自己的表将它们保存为不同的东西。例如,附加文档:您可能希望将文档附加到许多不同类型的事物上。为此使用多态关系,例如称为“可记录”。
Document
belongs_to :documentable, :polymorphic => true
#expects a documentable_id field (integer) and a documentable_type field (string)
User
has_many :documents, :as => :documentable
Company
has_many :documents, :as => :documentable
答案 1 :(得分:0)
当您需要在同一个对象/表中包含所有内容时,请使用STI。与其他对象,属性和验证的关系可以根据对象的状态而改变。
当您的对象与未指定类型的另一个对象相关时,请使用多态关系。参见#max-williams的例子