0

使用类表继承,建议子类引用超类,而不是相反。通常在 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 的背道而驰,以至于我们应该避免它?

4

1 回答 1

0

我选择了最简单的解决方案:使用多态关联(如第二个块所示)。它将具有更好的性能并且更易于维护。

于 2009-10-04T14:01:10.100 回答