ruby-on-rails - Rails 多表继承、多态关联还是单表继承?

标签 ruby-on-rails activerecord model data-modeling openehr

我正在尝试在 Rails (ActiveRecord) 中实现 OpenEHR 引用模型,但我发现了一些问题,因为它适用于许多不同的类,

这是Composition的示意图:

Composition diagram

如您所见,许多类“继承”了 Locatable 的几个属性。或 Pathable *(整个引用很大,几乎每个类都继承自它)。

此外,它将 data_types 建立为其他类,例如在同一组合类中,language是类(class)CODE_PHRASE , 有两个属性 ( link )。

因此,我遇到两个问题:1)如何从抽象类继承属性,以及 2)如何“包含”所需的“类”。

对于我在使用多态关联时想到的第一个问题。

对于第二个,我想使用 STI,但我很快找到了很多几乎相似的模型(实际上它们完全相同):CompositionLanguage , CompositionTerritory , EntrySetting , EntryEncoding我只在 type 中使用“链接回”的属性,例如:组合类,最多可以有三个属性,带有 CODE_PHRASE ,因为这三个都引用了不同的属性(语言、领土和类别),我认为我需要知道关联(知道 Composition 有 3 个 code_phrases 是没有意义的,但我不知道哪个是相应的属性)。另一方面,Entry类,有settingencoding属性( 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/

相关文章:

ruby-on-rails - "Command Prompt with Ruby on Rails"从哪里来,为什么它不断创建 "sites"文件夹?

ruby-on-rails - 在 Ruby on Rails 中向 ActiveRecord 实例添加验证回调

node.js - NodeJs sails 模型替换现有表

ruby-on-rails - Ruby 中的 Web 抓取 Mechanize 为浏览器生成不同的 html

ruby-on-rails - ruby rails : delayed jobs are not working with mailer and give route error

ruby-on-rails - 如何在 Actionmailer 消息中使用不同的布局?

ruby-on-rails - ActiveRecord 将字段设置为 SQL 表达式

ruby-on-rails - 我需要帮助找出在 Rails 中查询这个的最佳方法

c# - 具有属性继承和事件冒泡的分层对象模型?

php - Eloquent 模型和模型之间的区别?