【问题标题】:Rails Multi Table Inheritance, Polymorphic association or Single Table Inheritance?Rails 多表继承、多态关联还是单表继承?
【发布时间】: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


    【解决方案1】:

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

    我无法通过 ActiveRecord 实现这种嵌套继承。下面的实现是一个模拟 openEHR RM 的例子。 如果这个例子对你有帮助,我会很高兴。

    https://github.com/skoba/openehr_rm_rails

    【讨论】:

      【解决方案2】:

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

      我认为 Shinji 使用 Active Record。

      就个人而言,鉴于 openEHR RM 的复杂结构,如果我刚开始,我可能会考虑使用带有 ORM 的 MongoDB 之类的东西。

      我已通过 openehr 技术列表向 openehr 技术社区指出您的问题,看看其他人是否可以提供帮助。

      伊恩

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-07-20
        • 1970-01-01
        • 2011-05-23
        • 2011-08-29
        • 1970-01-01
        相关资源
        最近更新 更多