我正在尝试在Rails(ActiveRecord)中实现OpenEHR参考模型,但我发现了一些问题,因为它适用于许多不同的classess,
以下是Composition:
的图表
正如您所看到的,很多类“继承”了Locatable
或Pathable
*中的几个属性(整个引用很大,几乎每个类都继承自它)。
此外,它将data_types建立为其他类,例如在同一个组合类中,language
是类CODE_PHRASE
,它有两个属性(link)。
因此我遇到两个问题1)如何从抽象类继承属性,以及2)我如何“包含”所需的“类”。
我在使用多态关联时遇到的第一个问题。
对于第二个,我想过使用STI,但我很快发现了很多几乎相似的模型(实际上它们完全相同):CompositionLanguage
,CompositionTerritory
,{{1} },EntrySetting
我只在EntryEncoding
属性中使用“链接回来”,例如:组合类,最多可以有三个属性type
,因为所有三个属性都引用了不同的属性(语言,领域和类别),我认为我需要知道关联(没有必要知道Composition有3个code_phrases,但我不知道哪个是相应的属性)。另一方面,CODE_PHRASE
类具有Entry
和setting
属性(link)。
我意识到可能有不同的方法,但我真的想知道是否可能是Rails(或ActiveRecord)。或者,也许我错过了概念信息。
答案 0 :(得分:5)
openEHR RM规范具有深层嵌套的继承和具有树层次结构的复合模式。
我无法通过ActiveRecord实现此嵌套继承。以下实现是模拟openEHR RM的示例。 如果这个例子可以帮到你,我会很高兴。
答案 1 :(得分:1)
我认为真嗣使用Active Record。
就个人而言,鉴于openEHR RM的复杂结构,如果我刚开始使用,我可能会尝试使用带有ORM的MongoDB。
我已通过openehr技术列表向openehr技术社区指出了您的问题,看看其他人是否可以提供帮助。
伊恩