1

私のアプリでは、ファイルシステムに非常に似たオブジェクト間の関係をモデル化する必要があります。

私は持っていますImageVideoそしてCollection

コレクションには、3 種類のオブジェクトすべてを含めることができます。画像とビデオは複数のコレクションの一部にすることができますが、コレクションは 1 つのコレクションにのみ含めることができます。

この種の関係をスパインでモデル化する最良の方法は何ですか?

私が考えたのは、1 つのジェネリック モデル定義からすべてをサブクラス化することです。Asset としましょう。すべてが Asset であり、そのモデルにクラスとインスタンス メソッドを実装でき、サブクラス化されたすべてのモデル定義がそれらのメソッドを継承します。

このアプローチで私が遭遇した問題は、アセットに関係を配置する必要がある/したいということです。

class Asset は Spine.Model を拡張します
    @configure 'アセット'、'タイトル'、'説明'

    @belongsTo 'コレクション'、コレクション

また、Colletion サブクラス Asset があり、Asset が Collection への参照を設定している場合、これが実際に機能するかどうかはわかりません。方法は、@hasMany 'collections', Collectionこのプロパティに複数のオブジェクトを設定するコレクションがないことを確認することです

別の質問: Asset.find(id) を使用して、Asset のサブクラスであるすべてのオブジェクトを取得できますか?

4

1 に答える 1

1

上記の構造が機能するかどうかを試す以外に、問題が何であるかはよくわかりません。

あなたが説明しているものは、「複合デザインパターン」( http://en.wikipedia.org/wiki/Composite_pattern )として知られています。ここCollectionで、 は「複合」であり、ImageVideoは「葉」です

あなたの質問に関連して、すでに定義したコードに加えて、サブクラスでは@hasManyなく次のものが必要ではないでしょうか。@hasMany 'collections', CollectionCollectionAsset

@hasMany 'assets', Asset

ツリーを上下に移動できることを考えると。

繰り返しますが、このような再帰的トラバーサルが Spine で機能するかどうかはよくわかりません (Spine を頻繁に使用していますが、試したことはありません)。

いくつか、Geert-Jan

于 2012-05-30T21:26:58.480 に答える