Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 具有不同角色作为子类的Rails人员模型_Ruby On Rails_Database Design_Composition_Subclassing_User Roles - Fatal编程技术网

Ruby on rails 具有不同角色作为子类的Rails人员模型

Ruby on rails 具有不同角色作为子类的Rails人员模型,ruby-on-rails,database-design,composition,subclassing,user-roles,Ruby On Rails,Database Design,Composition,Subclassing,User Roles,我正在使用RubyonRails,但这个问题通常适用于应用程序/数据库模型设计。我想为许多类型的人建模,比如用户(可以登录的人)、员工和客户。其中每一个都有共同的属性,比如姓名和电子邮件,它们应该是Person超类的一部分。每种类型还具有其他更具体的属性。一个人可以是这些角色中的一个或多个(一个人既可以是员工也可以是客户) 在代码中,适当的结构看起来像一个超类/子类关系,但从数据库规范化的角度来看,应该有一个客户表,该表引用Person表的公共属性 我需要决定如何结合这两种方法 例如,我希望能够

我正在使用RubyonRails,但这个问题通常适用于应用程序/数据库模型设计。我想为许多类型的人建模,比如用户(可以登录的人)、员工和客户。其中每一个都有共同的属性,比如姓名和电子邮件,它们应该是Person超类的一部分。每种类型还具有其他更具体的属性。一个人可以是这些角色中的一个或多个(一个人既可以是员工也可以是客户)

在代码中,适当的结构看起来像一个超类/子类关系,但从数据库规范化的角度来看,应该有一个客户表,该表引用Person表的公共属性

我需要决定如何结合这两种方法


例如,我希望能够通过
Customer.create(名称:“Johnny Appleseed”,最喜欢的产品:widget)
和query
Employee.where(电子邮件:someone@company.com”
,并避免在每个角色模型上重复人员字段。这样,我就可以改变我为一个人建模的方式,而无需使用相同的更改更新所有其他表。

如果使用单表继承,效果会更好。
您可以从本教程开始

使用单表继承会更好。
您可以从本教程开始

用户是否可以与客户和员工是同一个人?我想你真的是在尝试建立一个表,用一种方式来确定哪个人是员工、客户还是两者都是。当你说“适当的结构看起来像一个超类/子类关系”时,你是否在想
角色
?用户是否可以和客户和员工是同一个人?我想你真的是在尝试建立一个表,用一种方式来确定哪个人是员工、客户还是两者都是。当你说“适当的结构看起来像一个超类/子类关系”时,你是在想
角色