【发布时间】:2010-08-17 03:56:30
【问题描述】:
我目前正在开发一个 Rails 3 应用程序,它看起来可能需要对几个模型使用类表继承。
这是一个简单的例子。
我有一个名为 Person 的类,它具有名称、电子邮件、密码等通用属性,这些属性对应用程序中的所有类型的人都是通用的,并用于身份验证。
Person 有两个子类(或两种类型的人......),Driver 和Passenger。这两个子类都共享 Person 的通用属性,但具有它们自己独有的特定附加属性。 (例如,驾驶员可以拥有许多车辆和执照,但乘客没有)
在这种情况下,我将如何实施 CTI?我一直在查看此处提供的示例:
http://rhnh.net/2010/08/15/class-table-inheritance-and-eager-loading
但它没有推测如何从 Driver 或 Passenger 对象访问 Person 的公共属性,我对此有点困惑。
我特别想知道的是:
如果我要更新驱动程序的属性,如何轻松访问和更新父人员表上的相关属性?我是否必须挂钩 after_save 回调并分离出哪个属性更新去哪里?还是有更好的方法来解决这个问题?
【问题讨论】:
-
我应该补充一点,这是我的应用程序中实际发生的事情的简化示例。我确定我需要在我的情况下实现类表继承,单表继承不是最好的方法。
-
我在我的问题中提到的博客上发表了评论,作者好心地提供了一种方法的例子:rhnh.net/2010/08/17/updating-class-table-inheritance-tables(你摇滚泽维尔!)
标签: ruby-on-rails-3 class-table-inheritance