Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.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 轨道3。如何塑造人?_Ruby On Rails_Ruby_Models - Fatal编程技术网

Ruby on rails 轨道3。如何塑造人?

Ruby on rails 轨道3。如何塑造人?,ruby-on-rails,ruby,models,Ruby On Rails,Ruby,Models,我有这个发票应用程序 目前我有以下4种型号: 人民: 联系人(他们就像客户一样,会将发票发送给他们) 用户(发送发票的人) 公司(用户属于公司) 组织(联系人属于组织) 当前的设置没有真正单击。这感觉不自然 我考虑的另一个选择是创建一个属于组织的人员模型 人,将有一个列类型_id(类型:客户端、管理员、将来添加更多) 但我不知道,不知怎的,我觉得type_id列不应该只引用两行表 在这种情况下,您将使用什么型号设置 ----添加澄清:---- 请记住,在不久的将来,一些客户端将能够登录。 注

我有这个发票应用程序

目前我有以下4种型号:

人民:

  • 联系人(他们就像客户一样,会将发票发送给他们)
  • 用户(发送发票的人)
  • 公司(用户属于公司)
  • 组织(联系人属于组织)
当前的设置没有真正单击。这感觉不自然

我考虑的另一个选择是创建一个属于组织的人员模型

人,将有一个列类型_id(类型:客户端、管理员、将来添加更多)

但我不知道,不知怎的,我觉得type_id列不应该只引用两行表

在这种情况下,您将使用什么型号设置

----添加澄清:----

请记住,在不久的将来,一些客户端将能够登录。 注意:如果客户只是个人,那么他就不属于某个组织

用户表示登录并发送发票的人员。他属于一家公司

联系人代表被开具发票的人,他可能属于也可能不属于某个组织

根据我的经验,如果多个用户类具有不同的逻辑,则该方法适用于多个用户类


但是,如果您有一个完全独立的联系人和用户,并且联系人甚至不能登录或不与用户共享字段,您应该将其设置为一个独立的模式。

您当前的设置对我来说并不太糟糕

如果联系人和用户在不同的数据需求下(我猜他们会这样),那么单表继承会带来更多的挑战。可以这样想:如果根据用户或联系人的不同,您将有一堆空列,那么不要使用STI。如果只有很少的空字段,那么就可以了

公司和组织领域有多重要?将被发送发票的联系人是否可以仅为公司名称和地址设置一个文本字段?也许这将有助于简化事情。

可能对你的情况有所帮助

由于所有实体都是人,因此可以实现如下内容:


未来应增加客户(或获得发票的人)登录的功能。在最近的一个项目中,我们有一个用于存储数据的
Partner
模型和一个用于登录的
PartnerUser