Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 轨道计算模型结构_Ruby On Rails_Database_Ruby On Rails 3_Object_Ruby On Rails 3.1 - Fatal编程技术网

Ruby on rails 轨道计算模型结构

Ruby on rails 轨道计算模型结构,ruby-on-rails,database,ruby-on-rails-3,object,ruby-on-rails-3.1,Ruby On Rails,Database,Ruby On Rails 3,Object,Ruby On Rails 3.1,我目前正在尝试建立一个用于执行各种计算的模型结构,其公式将存储在模型中 目前,我有一个操作数模型,它通过多对多与操作模型相连接。只要我能够始终进行简单的计算(即不需要中间步骤),这就可以很好地工作 我遇到的问题是,我是否需要(例如)从一个运算的结果中减去另一个运算的结果。我知道我可以使用第二个模型对运算进行计算,但我会在链的更上游遇到同样的问题(即,如果我需要对计算结果进行运算) 因此,我需要的基本上是一种嵌套操作的方法,即一个操作可以将操作数模型中的正常操作数或另一个操作的结果作为其操作数。有

我目前正在尝试建立一个用于执行各种计算的模型结构,其公式将存储在模型中

目前,我有一个操作数模型,它通过多对多与操作模型相连接。只要我能够始终进行简单的计算(即不需要中间步骤),这就可以很好地工作

我遇到的问题是,我是否需要(例如)从一个运算的结果中减去另一个运算的结果。我知道我可以使用第二个模型对运算进行计算,但我会在链的更上游遇到同样的问题(即,如果我需要对计算结果进行运算)

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


谢谢

我不知道是否非常理解您的问题,但在我看来,您似乎希望在保存属性之前对其执行操作。您可以使用
super()

def attribute=(val)
  new_val = #any types of operations on val
  super(val)
end

我不知道是否非常理解您的问题,但在我看来,您希望在保存属性之前对其执行操作。您可以使用
super()

def attribute=(val)
  new_val = #any types of operations on val
  super(val)
end

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

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

  • 您是否有一个“当前结果”模型,用于在执行每个操作后存储结果?我认为每个操作都可以在“当前结果”模型上执行,它可以存储当前结果

  • 我也见过这样的情况,“寄存器”的概念被用作中间结果的临时存储例如,存储到寄存器1'本身就是一个操作。如果您开发了“寄存器”对象,您可以将结果存储到其中并从中获取结果(甚至可以对其执行操作并将结果保留在寄存器中),这可能会有所帮助


  • 这在您的领域中有意义吗?

    这实际上是一个对象建模问题,而不是rails问题——如果没有更详细地理解领域模型,我不确定我能帮上多少忙

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

  • 您是否有一个“当前结果”模型,用于在执行每个操作后存储结果?我认为每个操作都可以在“当前结果”模型上执行,它可以存储当前结果

  • 我也见过这样的情况,“寄存器”的概念被用作中间结果的临时存储例如,存储到寄存器1'本身就是一个操作。如果您开发了“寄存器”对象,您可以将结果存储到其中并从中获取结果(甚至可以对其执行操作并将结果保留在寄存器中),这可能会有所帮助

  • 这在你的领域有意义吗