【发布时间】:2015-03-10 15:39:41
【问题描述】:
我正在尝试在 Rails (ActiveRecord) 中实现 OpenEHR 参考模型,但我发现了一些问题,因为它适用于许多不同的不同类,
这是Composition的示意图:
如您所见,很多类“继承”了Locatable 或Pathable* 的几个属性(整个引用很大,几乎每个类都继承自它)。
此外,它将data_types建立为其他类,例如在同一个组合类中,language是类CODE_PHRASE,具有两个属性(link)。
因此我遇到了两个问题:1)如何从抽象类继承属性,以及 2)如何“包含”所需的“类”。
对于我在使用多态关联时想到的第一个问题。
对于第二个,我想使用 STI,但我很快就找到了很多几乎相似的模型(实际上它们完全相同):CompositionLanguage、CompositionTerritory、EntrySetting、EntryEncoding我只在type属性中使用“链接回”,例如:组合类,最多可以有三个属性CODE_PHRASE,因为所有三个引用不同的属性(语言,领土和类别),我想我需要知道的关联(知道 Composition 有 3 个 code_phrases 是没有意义的,但我不知道哪个是相应的属性)。另一方面,Entry 类具有setting 和encoding 属性(link)。
我意识到可能有不同的方法,但我真的很想知道 Rails(或 ActiveRecord)是否不是为此而设计的。或者,也许我缺少概念信息。
【问题讨论】:
标签: ruby-on-rails activerecord model data-modeling openehr