0

我目前有一个metric模型,它可以取两个operands并基于其执行计算operation_type,通过自定义结果方法产生结果。这按预期工作。

为了使其可扩展,我希望能够使用两个操作数(目前),一个操作数和一个指标,或两个指标来执行计算。这样做的原因是它是可扩展的——我可以使用以前操作的结果。

我被困的地方是如何创建这个自我加入——我想我需要以某种方式走上多态自我引用的道路,但文档并没有引导我找到答案。我目前还有一个calculated_metric模型设置,但我不确定这是否是要走的路。

我的模型如下所示:

class Metric < ActiveRecord::Base
    attr_accessible :name, :operation_type_id
end

class Operand < ActiveRecord::Base
    attr_accessible :object, :attribute
end

class Calculated_metric < ActiveRecord::Base
    attr_accessible :metric_id, :calculated_metric_id
end

任何帮助将不胜感激。谢谢!

编辑:也许我可以澄清一下:我目前有一个单独的calculated_metric模型;这是为了在我的计算中使用另一个度量的结果而采取的最佳方法,还是我可以通过在我现有的表中添加一个left_metric和来更简单地实现这一点(如果方程是减法,左和右是这样的,对于例如,它知道哪个被带走)?我不确定这是否是一个理想的解决方案,因为在很多情况下它们都是空的。right_metricmetric

4

1 回答 1

1

我相信我可能在这里偶然发现了一个可能的情况——我没有引用度量标准本身,而是metric_id在模型中添加了一个列operand,这意味着它可以引用一个对象属性或另一个度量标准。

我认为这个解决方案有效,尽管操作数模型中总会有至少一个空列;因此,仍然欢迎更好的解决方案。

谢谢!

于 2012-07-16T14:44:19.767 回答