Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/65.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 Postgresql依赖于记录id_Ruby On Rails_Ruby_Database_Postgresql - Fatal编程技术网

Ruby on rails Postgresql依赖于记录id

Ruby on rails Postgresql依赖于记录id,ruby-on-rails,ruby,database,postgresql,Ruby On Rails,Ruby,Database,Postgresql,我正在使用RubyonRails和Postgresql进行应用程序设计。我有一个包含以下字段的表 表:账户类型 字段:id(主键)、名称(字符串) AccountType名称是唯一的字符串(因此我考虑对其设置唯一的约束)。根据名称(类型),我将在我的模型中进行一些检查。诸如此类: def城市? self.name=='Some long type' 结束 问题是:我会这样离开吗?或者,作为另一个选项,我可以依赖于某个ID。因此,假设我的“某个长类型”总是在ID=1的情况下创建的,我可以检查

我正在使用RubyonRails和Postgresql进行应用程序设计。我有一个包含以下字段的表

表:账户类型 字段:id(主键)、名称(字符串)

AccountType名称是唯一的字符串(因此我考虑对其设置唯一的约束)。根据名称(类型),我将在我的模型中进行一些检查。诸如此类:


def城市?
self.name=='Some long type'
结束

问题是:我会这样离开吗?或者,作为另一个选项,我可以依赖于某个ID。因此,假设我的“某个长类型”总是在ID=1的情况下创建的,我可以检查


def城市?
self.id==1
结束


如果我确实依赖ID,这是一种好的做法吗?可读性如何?这个问题还有其他解决方案吗?

第二个例子是关于如何使用代理键的教科书案例 您真正的主键是account_类型,并且应该具有唯一的键。对于主键使用auto inc id列总是有好处的。按id查询取决于行的插入方式。按帐户\ u type.name查询是不可变的

可读性?id字段不提供记录真正含义的信息


其他解决方案?我真的不知道问题出在哪里,但您也可以使用枚举类型(但它比查找表灵活得多)。

不,依赖id不是一种好的做法。因为它是自增量的,您可能会在截断内容表后感到困惑,而id计数器将保留在删除的最后一行上。您应该创建一个列,该列将获得2个值1或0,或者依赖于第一个代码段中显示的名称。如果AccountType(仅名称)中没有数据,您可能应该为您的
Accout
模型使用
enum