Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 单表继承还是类表继承?_Ruby On Rails_Ruby_Database Design_Single Table Inheritance - Fatal编程技术网

Ruby on rails 单表继承还是类表继承?

Ruby on rails 单表继承还是类表继承?,ruby-on-rails,ruby,database-design,single-table-inheritance,Ruby On Rails,Ruby,Database Design,Single Table Inheritance,我正在阅读关于类表继承(CTI)的书籍,发现总体上我更喜欢它。我的问题是,单表继承(STI)是否有任何特定的用例,您可以在CTI上使用它 我读过,据我所知,它是可靠的。STI的用例是行为上的差异,而不是数据上的差异。我想向您指出我发现的一篇伟大的文章,它清楚地解释了为什么以及何时使用CTI 像你说的那样,使用STI治疗行为差异。我会举一个例子: 您有Purchase,也有PartialPurchase,与数据的唯一区别是,当PartialPurchase完成时,它将获得与新创建的Purchase

我正在阅读关于类表继承(CTI)的书籍,发现总体上我更喜欢它。我的问题是,单表继承(STI)是否有任何特定的用例,您可以在CTI上使用它


我读过,据我所知,它是可靠的。STI的用例是行为上的差异,而不是数据上的差异。

我想向您指出我发现的一篇伟大的文章,它清楚地解释了为什么以及何时使用CTI

像你说的那样,使用STI治疗行为差异。我会举一个例子:

您有Purchase,也有PartialPurchase,与数据的唯一区别是,当PartialPurchase完成时,它将获得与新创建的Purchase的关系

所以行为是不同的,而且,在某些情况下,我希望PartialPurchase和Purchase显示在同一个查询中。对于商业代理来说,他们希望同时看到所有的购买和部分购买,因此将这些数据放在同一个表中是有意义的。否则,每个模型的所有属性都相同

在这种情况下,我会使用STI而不是CTI


虽然如果数据开始有很大差异,我可能会创建另一个与STI表相关的表,在许多不同字段的情况下,我可能会想到CTI。

另外,你给我的另一个链接是,它有很多关于这个的博客链接。谢谢。@SpaceGhost这里没有GitHub页面站点。