使用ActiveRecord的单表继承。因为我们可以使用@test = Employee.all
并找到所有创建的员工。 rails如何做到这一点?因为我们只使用用户表。它如何了解员工并仅检索员工? Rails Magic?有人解释吗?提前谢谢。
Base Class : Person (inherits ActiveRecord)
Sub-Class: Employee, Supervisor, Manager (each inherit Person)
所以我的Person表需要有一个_type和_id字段来使表具有多态性。
我的下一个问题是如何将Personee Associated与Person表相关联,当您保存员工时,如何让它实际放入person_type字段中的Employee?
答案 0 :(得分:3)
向Ruby on Rails表明 用户表需要支持Single 要添加的表继承 用户名为“type”的列 表。这是我的用户表 定义:
CREATE TABLE用户(id INT NOT NULL AUTO_INCREMENT,用户 VARCHAR(15)NOT NULL UNIQUE,传递 VARCHAR(40)NOT NULL,键入 VARCHAR(20)NOT NULL,PRIMARY KEY(id));
在名为type you的列中 应该存储类的名称, 应该使用的类类型 为每个用户。标记某个用户 作为管理员设置他的类型 '管理员'。通过设置用户的 输入你要给的'管理员' 他是完全的管理员权限 在管理员模型中定义 类。
http://juixe.com/techknow/index.php/2006/06/03/rails-single-table-inheritance/
答案 1 :(得分:2)
单表继承使用表上的type
列来指示对象的类型。 ActiveRecord
知道您的Employee
类正在使用单表继承(它没有匹配的表,而users / people表有一个类型列)。
因此,当您要求Employee.all
时,它知道要在type == 'Employee'
的用户/人员表中查找所有条目。
如果查看日志,将为这些查询显示SQL,您将看到“魔术”发生。