好的,所以我一直在玩弄关于 STI 和多态关联的 Rails 3 应用程序的不同组织方式。我试图找到一种既易于编码又易于使用的方法,并且最有可能与未来的任何更改兼容。在大量阅读了很多可选的(通常是缺乏且写得不好的)文章之后,我得出了自己的一些结论。
首先,似乎使用 STI 是最安全的选择,因为它易于编码、易于阅读和使用,并且易于处理未来的任何更改而无需过多重写。我能看到的唯一合法的缺点是,在您的数据库中,数据中会有“漏洞”。有些人认为这是一件坏事。但是,恕我直言,如果这是唯一的缺点,并且结果是让你的余生变得更轻松,那么谁在乎?
其次,多态关联似乎真的只在某些情况下才能很好地工作,绝对不是所有情况。此外,似乎在任何可以使用多态关联的情况下,您也可以只使用 STI(而不是相反)。那么,为什么还要为多态关联而烦恼呢?只是为了从您的数据库中清除那些讨厌的“漏洞”?但是随后您添加了看起来非常相似的重复字段和额外表,更不用说多组控制器、模型和视图等。
第三,即使您确实确定了使用多态关联的适当时间并正确实施它,事情可能会发生变化,您会发现自己不得不撕掉多态的东西并最终实现 STI。我没有看到反过来发生这种情况的时候。STI 似乎适用于任何设置,而多态关联似乎需要“恰到好处”才能像宣传的那样工作。
现在,我不是最聪明的人,所以这些可能是错误的和/或短视的观察 - 如果您认为我错了,请告诉我,并尝试提供一些好的证据来支持您的案例!