Ruby on rails 在决定使用单表继承时要考虑什么

Ruby on rails 在决定使用单表继承时要考虑什么,ruby-on-rails,activerecord,associations,single-table-inheritance,Ruby On Rails,Activerecord,Associations,Single Table Inheritance,我准备开始一个小项目,它提供了一个使用单表继承的机会。当我阅读之前关于Stackoverflow的STI帖子时,似乎在争论的各个方面都有一些强烈的观点 我的申请与我的赛马爱好有关。马的关系是指马的现任骑师、驯马师和主人。骑师、培训师和所有者可以使用三个单独的表(模型/类)建模,或者通过单表继承将其建模为一个类和多个子类 当面对这样的决策时,是否有一个问题检查表,可以用来确定哪种方法更可取。我假设使用STI可以减少潜在连接的数量。其他实际考虑事项是什么?您应该考虑以下几点: 从概念上讲,对象是单亲

我准备开始一个小项目,它提供了一个使用单表继承的机会。当我阅读之前关于Stackoverflow的STI帖子时,似乎在争论的各个方面都有一些强烈的观点

我的申请与我的赛马爱好有关。马的关系是指马的现任骑师、驯马师和主人。骑师、培训师和所有者可以使用三个单独的表(模型/类)建模,或者通过单表继承将其建模为一个类和多个子类

当面对这样的决策时,是否有一个问题检查表,可以用来确定哪种方法更可取。我假设使用STI可以减少潜在连接的数量。其他实际考虑事项是什么?

您应该考虑以下几点:

  • 从概念上讲,对象是单亲的子对象吗?
    不要仅仅因为类共享某些属性就使用单表继承;确保它们和一个可理解的父类之间实际上存在OO继承关系
  • 是否需要同时对所有对象执行数据库查询?
    如果要将对象列在一起或对所有数据运行聚合查询,可能需要将所有数据都放在同一个数据库表中,以提高速度和简化性
  • 对象是否有相似的数据但行为不同?
    如果有更多的模型特定列,则应该考虑多态性关联。
    这篇文章更深入了一点。

    Brandon-感谢您的输入和文章,这正是我想要的信息。