私はレールアプリケーションを作成しています。私のコードを設計する方法にいくつかの問題を引き起こしている部分があります。私はこれをちょっと面倒なことをしていると感じています。デザインパターンがあるのか、それとも一般的にこれを行うのが良いのかを知りたいと思います。状況は次のようなものです:リソースクラスをより効率的に整理する方法
私は都市モデルを持っていて、都市は木、石、金を保管することができます。これらのリソースは、タイムスタンプに基づいて時間とともに変化しています。彼らはamount、changed_timestampのような独自の属性を持っています。
今、私はwood_production、stone_production、gold_productionのような3つの別々のモデルを作成することは良い考えのように思えました。私は、特定のリソースタイプの量やタイムスタンプを変更したいときしかし、問題が発生
city.wood or city.stone
:私はのようなものを実行できるように、私はまた、委任者と仮想属性を作成しました。建物のコストは
{:wood => 200, :stone => 100, :gold => 50}
と作成されているとします。だから、建物が作られていると私は今、都市からのリソースを減らさなければならないと言う。これは、私のような何かをする必要があります:
self.wood_production.update_attribute(:change_timestamp, Time.now)
self.wood -= v
self.save
これは、リソースに固有の問題です。私ははるかにリソースの種類(ifsとより多くのスパゲッティを使用せずに注意を払うことなく手続きを続けるset_resourceメソッドを持っていると思います)。
どうすればよいですか?
後者ですが、wood_production.amountのエイリアスです。私は都市のすべてを保管していきたいと思っていないので、sendを使うのが良い方法だと思います。ありがとう! – Spyros
さて、本当にそれを整理するための良い方法はありません。属性を変更するためのより一般的な方法を得るために 'send'を使うだけで良いです。仮想的な属性ですが、私は私の例を微調整して、エイリアスではなく直接呼び出すだけです。 –