2011-07-07 6 views
0

私はビジネスロジック全体を実装している宝石を持っていますので、別のアプリケーションで使うことができます。現在、これらのアプリケーションの1つに永続性が必要です。永続性をサポートするために既存のRubyモデルを簡単に拡張するにはどうすればよいですか?私はそれらに猿を貼るべきですか?永続性をサポートするために既存のRubyモデルを拡張する方法

私のモデルオブジェクトは、通常、XMLまたはJSONファイルから構築されていますが、今はリレーショナルデータベースに格納する必要があります。

この問題の一般的なパターンはありますか?永続性をサポートし、レガシーオブジェクトと新しいモデルオブジェクトとの間をマッピングする新しいモデルオブジェクトを記述するか、既存のモデルオブジェクトを拡張してデータベースで表現可能にする必要がありますか?

ヒント、ヒント、リンクは大歓迎です。

答えて

1

私はあなたの質問を完全に理解しているかどうかはわかりません。

  1. それは(ActiveRecordのがないなどのような)クラスの継承ではなくミックスインに依存しない:しかし、DataMapperライブラリは非常に簡単に二つの理由のために、事実の後に既存のオブジェクト・モデルに永続性を追加するために使用することができます継承することができ、好きなミックスインを継承することができます。つまり、オブジェクトモデルの継承ツリーを変更してDataMapperを追加する必要がなくなります。
  2. オブジェクト・リレーショナル・マッピングは、モデルで明示的に宣言され、データストアから推測されません。これは、ActiveRecordの単純な1:1テーブル==クラス、行==オブジェクト、カラム==属性マッピングとは異なり、データストアとモデルの間に非常に複雑なマッピングを持つことができることを意味します。

ここでは、永続性の側面を完全に直交させて管理するかどうかにかかわらず、別の宝石で、それは別の質問です。 実際には、すべてのモデルクラスとinclude DataMapper::Resourceを開き、すべてのプロパティを宣言する別のライブラリに保持することができます。これにより、永続性を持たずにオブジェクトモデルの宝石を引き続き展開できますが、永続性の宝石は明らかにオブジェクトモデルの宝石と密接に結合しています。

関連する問題