Rails多表继承、多态关联或单表继承?

4
我正在尝试在Rails(ActiveRecord)中实现OpenEHR参考模型,但我遇到了一些问题,因为它涉及到许多不同的类。
这里是组成的图示:

Composition diagram

正如您所看到的,很多类从LocatablePathable继承了一些属性*(整个参考文献非常庞大,几乎每个类都从中继承)。
此外,它将data_types建立为其他类,例如在同一组成类中,languageCODE_PHRASE类,它具有两个属性(link)。
因此,我遇到了两个问题:1)如何从抽象类继承属性,2)如何“包含”所需的“类”。
对于第一个问题,我考虑使用多态关联。
对于第二个问题,我考虑使用STI,但是我很快发现有许多几乎相似的模型(实际上它们完全相同):CompositionLanguageCompositionTerritoryEntrySettingEntryEncoding,我只在type属性中使用它们来“链接回去”,例如:组合类可以有多达三个带有CODE_PHRASE的属性,因为这三个引用了不同的属性(语言、领域和类别),我认为我需要知道关联信息(知道Composition有3个code_phrases是没有意义的,但我不知道哪一个是相应的属性)。另一方面,Entry类有settingencoding属性(link)。
我意识到可能有不同的方法,但我真的想知道是否Rails(或ActiveRecord)不适合这种情况。或者,也许我缺少概念信息。
2个回答

5

openEHR RM规范具有深度嵌套的继承和树形层次结构的组合模式。

我无法通过ActiveRecord实现这种嵌套继承。以下实现是一个示例,用于模拟openEHR RM。 如果此示例能够帮助您,我将非常高兴。

https://github.com/skoba/openehr_rm_rails


1

你看过这个项目吗.. https://github.com/skoba/openehr-rails

我认为Shinji使用了Active Record。

就我个人而言,考虑到openEHR RM的复杂结构,如果我开始学习的话,我可能会使用像MongoDB这样的ORM。

我已经通过openehr技术列表向openehr技术社区指出了你的问题,以便其他人能够提供帮助。

Ian


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接