2012-07-16 69 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列,這意味着它可以引用一個對象屬性或另一個度量。

我認爲這個解決方案可以工作,儘管在操作數模型中總會有至少一個空列;因此,更好的解決方案仍然受到歡迎。

謝謝!