Ruby on rails Postgresql依赖于记录id
我正在使用RubyonRails和Postgresql进行应用程序设计。我有一个包含以下字段的表 表:账户类型 字段:id(主键)、名称(字符串) AccountType名称是唯一的字符串(因此我考虑对其设置唯一的约束)。根据名称(类型),我将在我的模型中进行一些检查。诸如此类: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的情况下创建的,我可以检查
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
?