1

現在、さまざまな計算を実行するためのモデル構造をまとめようとしています。そのための式はモデル内に格納されます。

現在、多対多で操作モデルに接続されているオペランド モデルがあります。これは、常に単純な計算を実行できる限り (つまり、中間ステップなしで) うまく機能します。

私が問題を抱えているのは、(たとえば) ある操作の結果を別の操作の結果から減算する必要がある場合です。2 番目のモデルを使用して操作の計算を実行できることは承知していますが、同じ問題がチェーンのさらに上で発生します (つまり、計算の結果に対して操作を実行する必要がある場合)。

そのため、基本的に必要なのは、操作をネストする方法です。つまり、操作は、オペランド モデルからの通常のオペランド、または別の操作の結果をオペランドとして使用できます。運用モデルが本質的にこのように自己参照する方法はありますか?

ありがとう!

4

2 に答える 2

1

これは実際には Rails の質問というよりもオブジェクト モデリングの質問です。ドメイン モデルをより詳細に理解していなければ、私が大いに役立つかどうかはわかりません。

しかし、電卓について考え、単純な操作セット/オペランド プログラミングがどのように機能するかを考えてみると、役に立つかもしれないいくつかのパターンがありました。

  1. 各操作の実行後に結果を保存する「現在の結果」モデルはありますか? 各操作は「現在の結果」モデルで実行でき、現在の結果が何であれ保存できると思います。

  2. また、「レジスタ」の概念が中間結果の一時的なストレージとして使用されている状況も見てきました。たとえば、'store to register 1' はそれ自体が操作になります。結果を保存してフェッチできる「レジスタ」オブジェクトで開発した場合(または、操作を実行して結果をレジスタに残すことができる場合でも)、役立つ場合があります。

これはあなたのドメインで意味がありますか?

于 2012-07-02T12:37:52.410 に答える
0

あなたの質問をよく理解しているかどうかわかりませんが、属性を保存する前に操作を実行したいように思えました。そのために使用できますsuper()

def attribute=(val)
  new_val = #any types of operations on val
  super(val)
end
于 2012-07-02T12:37:50.863 に答える