1

在我的应用程序中,我需要对与文件系统非常相似的对象之间的关系进行建模。

我有ImageVideo并且Collection

集合可以包含所有三种类型的对象。虽然图像和视频可以是多个集合的一部分,但集合只能包含在一 (1) 个集合中。

在脊柱中模拟这种关系的最佳方法是什么?

我想做的是从一个通用模型定义中创建所有子类,比如说资产,所以一切都是资产,我可以在该模型上实现类和实例方法,并且所有子类模型定义都继承这些方法。

我用这种方法遇到的问题是我需要/想把关系放在资产上,所以

资产类扩展 Spine.Model
    @configure '资产'、'标题'、'描述'

    @belongsTo '收藏',收藏

除了我不确定这是否真的有效,如果我有Colletion子类资产并且资产设置了对Collection的引用......这里的问题是belongsTo是一种单向关系,我只需要这个对于Collections所以正确方法是拥有一个@hasMany 'collections', Collection并确保没有集合为此属性设置多个对象

另一个问题是:我可以使用 Asset.find(id) 来获取所有属于 Asset 子类的对象吗?

4

1 回答 1

1

除了尝试您的上述结构是否有效之外,我不确定您的问题是什么。

您所描述的被称为“复合设计模式”(http://en.wikipedia.org/wiki/Composite_pattern),其中“复合”是“复合” ,Collection两者都是“叶子”ImageVideo

关于您的问题,除了您已经定义的代码之外,@hasMany您是否想要以下内容而不是@hasMany 'collections', Collection您的子类:CollectionAsset

@hasMany 'assets', Asset

鉴于您可以上下遍历树。

同样,我真的不确定这种递归遍历是否适用于 Spine(从未尝试过,尽管我广泛使用 Spine)

一些,Geert-Jan

于 2012-05-30T21:26:58.480 回答