0

好的,所以我一直在玩弄关于 STI 和多态关联的 Rails 3 应用程序的不同组织方式。我试图找到一种既易于编码又易于使用的方法,并且最有可能与未来的任何更改兼容。在大量阅读了很多可选的(通常是缺乏且写得不好的)文章之后,我得出了自己的一些结论。

首先,似乎使用 STI 是最安全的选择,因为它易于编码、易于阅读和使用,并且易于处理未来的任何更改而无需过多重写。我能看到的唯一合法的缺点是,在您的数据库中,数据中会有“漏洞”。有些人认为这是一件坏事。但是,恕我直言,如果这是唯一的缺点,并且结果是让你的余生变得更轻松,那么谁在乎?

其次,多态关联似乎真的只在某些情况下才能很好地工作,绝对不是所有情况。此外,似乎在任何可以使用多态关联的情况下,您也可以只使用 STI(而不是相反)。那么,为什么还要为多态关联而烦恼呢?只是为了从您的数据库中清除那些讨厌的“漏洞”?但是随后您添加了看起来非常相似的重复字段和额外表,更不用说多组控制器、模型和视图等。

第三,即使您确实确定了使用多态关联的适当时间并正确实施它,事情可能会发生变化,您会发现自己不得不撕掉多态的东西并最终实现 STI。我没有看到反过来发生这种情况的时候。STI 似乎适用于任何设置,而多态关联似乎需要“恰到好处”才能像宣传的那样工作。

现在,我不是最聪明的人,所以这些可能是错误的和/或短视的观察 - 如果您认为我错了,请告诉我,并尝试提供一些好的证据来支持您的案例!

4

1 回答 1

1

如果我把你的论点带到最远的结论,我会得到类似的东西:为什么还要为拥有多个数据库表而烦恼?只需使用一张表和 STI 来存储您的所有数据。

此外,考虑一个包含作者、出版商、书籍和用户的书店应用程序。想象一下,用户可以选择订阅电子邮件通知,以了解对任何作者、书籍或出版商的更改。为此,可以创建一个notifications表。该表希望与任何可以遵循的对象具有多态关联。您将如何使用 STI 以更简洁的方式构建它?

于 2010-09-11T06:03:05.143 回答