我正在尝试在 Rails (ActiveRecord) 中实现 OpenEHR 引用模型,但我发现了一些问题,因为它适用于许多不同的类,
这是Composition的示意图:
如您所见,许多类“继承”了 Locatable
的几个属性。或 Pathable
*(整个引用很大,几乎每个类都继承自它)。
此外,它将 data_types 建立为其他类,例如在同一组合类中,language
是类(class)CODE_PHRASE
, 有两个属性 ( link )。
因此,我遇到两个问题:1)如何从抽象类继承属性,以及 2)如何“包含”所需的“类”。
对于我在使用多态关联时想到的第一个问题。
对于第二个,我想使用 STI,但我很快找到了很多几乎相似的模型(实际上它们完全相同):CompositionLanguage
, CompositionTerritory
, EntrySetting
, EntryEncoding
我只在 type
中使用“链接回”的属性,例如:组合类,最多可以有三个属性,带有 CODE_PHRASE
,因为这三个都引用了不同的属性(语言、领土和类别),我认为我需要知道关联(知道 Composition 有 3 个 code_phrases 是没有意义的,但我不知道哪个是相应的属性)。另一方面,Entry
类,有setting
和 encoding
属性( link )。
我意识到可能有不同的方法,但我真的很想知道 Rails(或 ActiveRecord)是否不是为此而设计的。或者,也许我缺少概念信息。
最佳答案
openEHR RM 规范具有深度嵌套的继承和具有树层次结构的复合模式。
我无法通过 ActiveRecord 实现这种嵌套继承。下面的实现是一个模拟 openEHR RM 的例子。
如果这个例子可以帮助你,我会很高兴。
https://github.com/skoba/openehr_rm_rails
关于ruby-on-rails - Rails 多表继承、多态关联还是单表继承?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27909328/