Rails - 自我引用模型?

时间:2012-07-16 10:36:22

标签: ruby-on-rails ruby-on-rails-3 rails-activerecord

我目前有一个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来更简单地实现此目的(左和右是这样的,如果等式是减法,例如,它知道哪一个被带走)?我不确定这是否是一个理想的解决方案,因为在很多情况下它们都是空的。

1 个答案:

答案 0 :(得分:1)

我相信我可能偶然发现了这里的可能性 - 而不是自己使用度量标准参考,我在metric_id模型中添加了operand列,这意味着它可以引用一个对象属性或另一个指标。

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

谢谢!