我目前有一个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_metric
和metric
来更简单地实现此目的(左和右是这样的,如果等式是减法,例如,它知道哪一个被带走)?我不确定这是否是一个理想的解决方案,因为在很多情况下它们都是空的。
答案 0 :(得分:1)
我相信我可能偶然发现了这里的可能性 - 而不是自己使用度量标准参考,我在metric_id
模型中添加了operand
列,这意味着它可以引用一个对象属性或另一个指标。
我认为这个解决方案有效,尽管操作数模型中总会至少有一个空列;因此,仍然欢迎更好的解决方案。
谢谢!