好的,这是我的情况。我是PHP开发人员最近转向Rails开发人员。在PHP代码中,使用抽象类作为“基础”类是一种非常常见的模式。当我转到我当前的Rails应用程序时,我做了很多关于PHP思路的“预先规划”,这让我有点头疼。
我有许多不同类型的发票。在PHP中,我将创建一个抽象类,并使用我的不同类型的发票来扩展该类。我会通过在抽象类中保留重复的代码来干掉事情并且生活是美好的。在rails中,事情有点不同。
我似乎无法找到一种完全符合我的先入之见的模式。 STI很不错,但我讨厌所有Null字段的想法,因为每张发票都有很多不同的字段。我已经接近使用模块来干扰我的代码的多态关联。但是,在任何地方,我看到多态关联的使用方式与我想要的方式不同。例如,在railscast中有三个不同的类,每个类都需要使用注释。它不完全一样。
所以这是我的问题:我已经知道如何使用模块来干掉我的代码,但是我如何使用多态关联为我的代码提供类似的模块化,就像在php中的“基类”一样?仅供参考我不能使用STI,因为对于有多少种不同类型的发票最终可能存在没有限制。现在是1,但在一个月内它可能是20.
答案 0 :(得分:3)
您可以使用另一个选项:多表继承。设置起来有点复杂,但它会为您提供STI中不存在的一些优点,以及一些不具有多态关联的优点。检查this post以了解如何使其发挥作用。