1

我目前正在尝试组合一个模型结构来执行各种计算,其公式将存储在模型中。

目前,我有一个操作数模型,它通过多对多与操作模型连接。只要我总是可以做一个简单的计算(即没有中间步骤),这就很好。

我有一个问题是如果我需要(例如)从另一个操作的结果中减去一个操作的结果。我知道我可以使用第二个模型来执行操作计算,但我会在链的更深处遇到同样的问题(即,如果我需要对计算结果执行操作)。

因此,我需要的本质上是一种嵌套操作的方法——即操作可以将操作数模型中的普通操作数或另一个操作的结果作为其操作数。有没有办法让运营模型像这样基本上自我引用?

谢谢!

4

2 回答 2

1

这实际上更像是一个对象建模问题,而不是一个 Rails 问题——如果没有更详细地了解域模型,我不确定我能提供多少帮助。

但是当我想到计算器以及我如何看到简单的操作集/操作数编程工作时,我看到了一些可能有用的模式:

  1. 您是否有一个“当前结果”模型来存储每次操作执行后的结果?我认为每个操作都可以在“当前结果”模型上执行,它可以存储当前结果。

  2. 我还看到了将“寄存器”的概念用作中间结果的临时存储的情况。例如,“store to register 1”本身就是一个操作。如果您开发了“注册”对象,您可以将结果存储到其中并从中获取它们(或者甚至您可以执行操作并将结果留在寄存器中),这可能会有所帮助。

这在您的领域有意义吗?

于 2012-07-02T12:37:52.410 回答
0

我不知道我是否很好地理解了您的问题,但在我看来,您希望在保存属性之前对其执行操作。你可以用它super()来做到这一点。

def attribute=(val)
  new_val = #any types of operations on val
  super(val)
end
于 2012-07-02T12:37:50.863 回答