从ActiveRecord对象继承

3
假设有一个名为user的activerecord类,它代表数据库中的用户表。
但我有不同类型的用户,他们具有
- 特殊功能 - 特殊变量 - 自定义关系(雇主has_many公司,员工belongs_to公司:)
但是这些用户也有很多共同的功能。所以我想为每种不同类型的用户创建类,然后从user类继承它们。
- User < ActiveRecord::Base - Employer < User - Employee < User - Customer < User 最好的做法是什么?
谢谢
2个回答

3
许多应用程序最初都会有一个User模型。随着不同类型的用户出现,将它们区分开可能是有意义的。引入AdminGuest类作为User的子类。现在,共享行为可以驻留在User中,子类型行为可以被推送到子类中。但是,所有用户数据仍然可以驻留在用户表中。
您需要做的就是向users表添加一个type列,该列将保存要为给定行实例化的类的名称。 Active Record负责在从数据库加载对象时实例化对象的类型。
这种技术称为单表继承或STI(简称)。
关于STI的一篇非常好的最新文章在此处:http://code.alexreisner.com/articles/single-table-inheritance-in-rails.html

非常感谢。最后,每个类的自定义关系怎么样? - Oguz Bilgic

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接