所以我知道 STI 是有史以来最受辱骂的事情,但我有一个例子,我认为它实际上可能有意义。我的应用程序正在解析一堆不同类型的 xml 文件。每个文件模型都存储完全相同的信息。只是一些关于它与什么用户关联、何时上传以及它在 S3 上存储位置的信息。
存储 xml 文件后,我会解析它以获取用于创建各种其他模型的信息。每种类型的文件都会创建不同的东西。可能有 100 个或更多不同类型的 xml 文件,尽管我不认为我会为那么多编写解析器。STI 在这种情况下有意义吗?
我猜的缺点是模型都在一个目录中,因此它将淹没该目录,除非破解 Rails 并将其粘贴在模型目录的子目录中。
另一种选择是我有一个 kind 字段并将一些东西放在处理所有这些的 lib 目录中。或者我正在使用 resque,也许每个 xml 文件解析器都应该是它自己的工作。这样做有一些缺点,比如在 Rails 控制台中强制工作有点尴尬。