【发布时间】:2016-12-20 01:09:24
【问题描述】:
我正在创建一个适用于多种运动(例如水肺潜水和跳伞)的日志应用程序,并且我正在尝试找到一种方法让子模型不仅继承父方法,而且继承父(数据库)列。
一张图片可以更好地解释: Logbook database sample
因此,ScubaDiving、FreeDiving 和 SkyDiving 类别下的任何模型都是我将从视图中调用的模型。
但是,Parent 或 Diving 下的模型永远不会被调用,并且仅用于使用数据库列(可能还有方法)填充其子代。
创建模型 + 关联 + 继承的最佳方式是什么?
根据我所做的研究,我了解到:
- 单表继承:
- 只会传递父方法,而不是数据库列
- 多态关联:
- 我将我的情况与我找到的示例(照片、文章、帖子上的 cmets)进行了比较,但我的 Divespot 和 Airport(等效:照片、文章)不能有 很多 个 Spot(eq:评论)。
- 多表继承:
- 无法让它工作,但它似乎最接近我的目标?
- 简单模型:
- 我总是可以为每个孩子(没有父母)创建一个模型并重复代码。我还是想看看有没有办法重构。
我正在使用 Rails 5 和 PostGresql 数据库。
【问题讨论】:
标签: ruby-on-rails postgresql inheritance polymorphic-associations sti