2

好的,这就是我的情况。我是一名 PHP 开发人员,最近转为 Rails 开发人员。在 PHP 代码中,使用抽象类作为“基”类是一种非常常见的模式。在迁移到我当前的 Rails 应用程序时,我做了很多“预先计划”,脑子里有 PHP 的想法,现在让我有点头疼。

我有许多不同类型的发票。在 PHP 中,我将创建一个抽象类,并拥有扩展该类的不同类型的发票。我会通过在抽象类中保留重复的代码来干掉事情,生活是美好的。在 Rails 中,事情的工作方式有点不同。

我似乎找不到完全符合我先入为主的模式。STI 很好,但我讨厌所有 Null 字段的想法,因为每张发票都有许多不同的字段。我已经接近使用模块来干燥我的代码的多态关联。然而,在我看来,多态关联的使用方式与我想要的方式不同。例如,在 railscast 中有三个不同的类,每个类都需要使用注释。它不完全一样。

所以这是我的问题:我已经知道如何使用模块来干燥我的代码,但是如何使用多态关联为我的代码提供与 php 中的“基”类类似的模块化?仅供参考,我不能使用 STI,因为最终可以生成多少不同类型的发票没有限制。现在是 1,但一个月后可能是 20。

4

1 回答 1

3

您可以使用另一个选项:多表继承。设置起来有点复杂,但它会给您一些 STI 中不存在的优势,以及多态关联中不存在的一些优势。检查这篇文章以了解如何使这项工作。

于 2013-03-26T13:19:14.477 回答