Rails - 单表继承问题。任何解决方案/选择

时间:2011-05-29 06:17:40

标签: ruby-on-rails ruby-on-rails-3 single-table-inheritance state-machine sti

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

铅<要求

项目<要求

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

招标<要求

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

在100个潜在客户中,我获得了20个项目,在100个招标中,我获得了5个项目。

现在作为一种解决方法我认为我可以使用布尔字段来说明这是否是一个招标。但这违背了STI的目的。有没有其他方法可以使用STI本身。或者是布尔[或某种类别/ project_type字段]是实现此目的的唯一方法。

我可以使用state_machine吗?

我一直试图让这一点正确。任何帮助都会很棒。

1 个答案:

答案 0 :(得分:0)

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

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

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

  3. 有一个:但这个看起来不干。没试过。添加作为理论选择。 项目有一个Lead或项目有一个招标。

  4. 状态机:似乎是一个有趣的选择。不知道我将如何跟踪状态变化。任何有State-Machine经验的人都可以帮助我吗?