ruby-on-rails-3 – Rails中的类继承表3

前端之家收集整理的这篇文章主要介绍了ruby-on-rails-3 – Rails中的类继承表3前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我目前正在使用一个Rails 3应用程序,它似乎可能需要为几个模型使用Class Table Inheritance.

这是一个简单的例子.

我有一个名为Person的类,其名称,电子邮件,密码等通用属性,这些属性适用于所有类型的用户,并用于认证.

人(或两类人)有两个子类,司机和乘客.这两个子类共享Person的通用属性,但是具有对于它们是唯一的特定附加属性. (例如,司机可以拥有许多车辆和许可证,但乘客不会)

如何在这种情况下实施CTI?我一直在看这里提供的例子:

http://rhnh.net/2010/08/15/class-table-inheritance-and-eager-loading

但是它并不推测如何从Driver或Passenger对象访问Person的常见属性,我有点困惑.

特别是,我想知道的是:

如果我正在更新驱动程序的属性,我如何轻松访问和更新父员工表上的相关属性?我必须钩住一个after_save回调并分离哪个属性更新到哪里?还是有更好的方法呢?

解决方法

还有一个插件’acts_as_relation’来做到这一点,
https://github.com/hzamani/acts_as_relation/

在你的情况下,代码将是这样的:

class Driver < ActiveRecord::Base
   acts_as :person
end

class Passenger < ActiveRecord::Base
  acts_as :person
end

不要忘记在person表中添加person_type和person_id列.现在Drive和Passenger都继承Person属性,验证和方法.

猜你在找的Ruby相关文章