使用类表继承,建议子类引用超类,而不是相反。通常在 Rails 中,多态关联在另一个方向上工作——超类是指子类。
受到推崇的
vehicle
.id
car
.vehicle_id # PK instead of using id (identity column)
boat
.vehicle_id
典型的 Rails 多态关联
vehicle
.id
.subclass_type
.subclass_id
car
.id
boat
.id
我喜欢推荐的方法是我可以取消不匹配的键。也就是说,给定的汽车及其超级车辆共享相同的 id。
在我的特定实例中,我可能会支持多重继承,因此,例如,我可以拥有一辆混合动力汽车。
问题:
您将如何设置 ActiveRecord 关联...
如果一辆车只能有一个子类?
如果一辆车可以有很多子类?(我在这里看到的问题是,通过不指定特定的 subclass_type 关联如何知道要命中哪个表。我猜他们不会,因此必须命中所有可能的表。所以也许交集表在这里会有所帮助。 )
这是一个与 ActiveRecord 一起使用的好设计模式,还是它与 Rails 的背道而驰,以至于我们应该避免它?