所以我们都知道 Rails 的 STI(单表继承)是 icky,因为它会导致数据模型混乱和数据库不理想。
然而 PostgreSQL 似乎非常漂亮地处理继承!
有没有办法在利用 Postgres 继承而不是痛苦的宽表和“类型”列的同时获得 rails 干净的 STI API?
所以我们都知道 Rails 的 STI(单表继承)是 icky,因为它会导致数据模型混乱和数据库不理想。
然而 PostgreSQL 似乎非常漂亮地处理继承!
有没有办法在利用 Postgres 继承而不是痛苦的宽表和“类型”列的同时获得 rails 干净的 STI API?
然而 PostgreSQL 似乎非常漂亮地处理继承!
真的吗?你仔细看说明书上的小字了吗?例如:
capitals
extends cities
。您的address
表要引用cities
. 它可以。capital
但是可以使用带有a的no地址。这两件事在小型“Hello World”项目之外的任何事情中都非常重要。所以我无法想象,任何有成效的事情都可以使用 PostgreSQL 继承来实现。
简而言之 - 没有漂亮干净的 STI API 可以用于您现在尝试完成的工作。
实际上,大约一年前我对此进行了研究,并得出结论认为这不是一个好主意,原因如下:
大多数 IT 问题实际上都归结为:努力与收益。
在您的情况下,您应该问自己这个问题:
PS:
还有一个关于在您的应用程序中构建 STI 的快速提示:如果您发现有很多使用 STI 的模型,例如 ProductCategory、CommentCategory、PhoneCategory、ClientCategory,它们都继承自 Cateogory - 我倾向于将它们组织在模型目录内的文件夹中。然后在application.rb中添加一行:config.autoload_paths += Dir[Rails.root.join('app', 'models', '{**/**}')]