0

私は現在、 2 つを取り、その に基づいて計算を実行し、カスタムの結果メソッドを通じて結果を生成metricできるモデルを持っています。これは期待どおりに機能しています。operandsoperation_type

これをスケーラブルにするために、(現在のように) 2 つのオペランド、1 つのオペランドと 1 つのメトリック、または 2 つのメトリックを使用して計算を実行できるようにしたいと考えています。その理由は、スケーラブルであるためです。以前の操作の結果を使用できます。

私が立ち往生しているのは、この自己結合を作成する方法です-どういうわけかポリモーフィックな自己参照の道をたどる必要があると思いますが、ドキュメントは私を答えに導きません。現在、モデルを追加してセットアップしていますが、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とを追加するだけでこれを達成できますか(式が減算の場合、左と右はたとえば、どれが奪われているかを知っています)?多くの場合、null になるため、これが理想的な解決策であるかどうかはわかりません。right_metricmetric

4

1 に答える 1

1

ここで可能性に遭遇した可能性があると思います-メトリック自体を参照するのではなくmetric_id、モデルに列を追加しましたoperand。これは、オブジェクト属性または別のメトリックを参照できることを意味します.

オペランド モデルには少なくとも 1 つの null 列が常に存在しますが、このソリューションは機能すると思います。そのため、より良いソリューションは引き続き歓迎されます。

ありがとう!

于 2012-07-16T14:44:19.767 に答える