2

对于我的项目管理应用程序,我目前正在使用单表继承,以便:

铅 < 要求

项目 < 要求

我的意思是说,领导是一项要求,项目是一项要求。没关系,虽然我只有这两个。然后我有另一个类似的东西(Tender),所以我创建了

招标 < 要求

现在的问题是,当投标转换为项目时,我无法确定哪些项目是投标,哪些是潜在客户。所以我不能说例如:

在 100 个潜在客户中,我得到 20 个项目,在 100 个投标中,我得到 5 个项目。

现在作为一种解决方法,我想我可以使用布尔字段来判断这是否是投标。但这违背了拥有 STI 的目的。是否有另一种方法可以使用 STI 本身来做到这一点。或者布尔值[或某种类别/项目类型字段]是完成此任务的唯一方法。

我可以为此使用 state_machine 吗?

一段时间以来,我一直在努力解决这个问题。任何帮助都会很棒。

4

1 回答 1

0

由于没有人回答这个问题,我正在记录我已经/正在尝试的不同方法。但随着我越来越多地尝试,我开始不喜欢 STI。

  1. 使用布尔值来指定需求是否是招标/潜在客户/项目。能够勾选多个的额外好处。一个需求可以从一个投标开始,然后成为一个潜在客户,然后是一个项目。

  2. 状态字段:HABTM。可以检查一种或多种状态。再次类似于 1,但增加了能够添加状态的好处。

  3. 有一个:但这一个似乎不干。没试过。作为理论选项添加。项目有一个潜在客户或项目有一个投标。

  4. 状态机:似乎是一个有趣的选择。不确定我将如何跟踪状态变化。任何有状态机经验的人都可以在这里帮助我吗?

于 2011-05-30T11:40:43.207 回答