【发布时间】:2017-04-28 16:27:54
【问题描述】:
情况
我有四个具有相同属性(即表存储需求)的 Rails 模型(A、B、C 和 D)。但是,模型 D 的行为与 A、B 和 C 完全不同,不应继承 A、B 和 C 共享的任何方法。现在我的工作继承层次结构看起来像:
继承层次结构
A <:base>
【问题讨论】:
-
如果您愿意ActiveRecord::Inheritance,请进行代码潜水。引用众所周知的 MTV(“这就是魔法发生的地方”)
-
如果它们不是子类型,为什么要共享同一个表?为了避免一些迁移,这听起来很复杂?
-
我以前读过
B < A,因为B 是A。如果D不是A的特殊类型,那么恕我直言,使用STI 将是一种反模式。鉴于 Rails 中与 STI 相关的所有魔力,与 Rails 约定作斗争要比复制一次迁移以拥有两个结构相似但名称不同的表要困难得多。 -
是的,max / @spickermann,我同意你们的看法。感谢您的意见。
标签: ruby-on-rails ruby inheritance activerecord