2012-07-16 67 views
0

我目前有一个metric模型,可能需要两个operands并根据其operation_type执行计算,通过自定义结果方法生成结果。这是按预期工作的。Rails - 自引用模型?

为了使其具有可扩展性,我希望能够使用两个操作数(如当前),一个操作数和一个度量或两个度量来执行计算。这是因为它的可扩展性 - 我可以使用以前的操作结果。

我卡在哪里是如何创建这个自我加入 - 我想我需要沿着多态自引用的道路,但文档并没有引导我回答。此外,我还有一个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_metricright_metric添加到我现有的metric表中来实现此目的(左和右是如果方程是减法,例如,它知道哪一个被拿走)?我不确定这是否是一个理想的解决方案,因为它们在很多情况下都是空的。

回答

1

我相信我可能在这里找到了一个可能 - 而不是有公制引用本身,我在operand模型中增加了一个metric_id列,这意味着它可以引用一个对象属性或另一个度量。

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

谢谢!