我的rails应用程序中有不同的模型,如客户,用户,管理员等。我想将主要id作为字符串,并在前面添加一个字符。所以对于客户来说,id就像C1,C2,C3。对于用户,它将是U1,U2,U3等。
答案 0 :(得分:2)
如果您真的需要这些信息,您可以定义一个名为string_id
的方法,或者返回前缀为您定义的自定义前缀的数字id
的方法吗?
非数字主键的比较(在数据库中查找记录时)只会减慢您的应用程序速度,我不确定您为什么要这样做,因为您只需执行{{1}调用你选择的模型来获取类名,或者类的第一个字符,或者其他什么。我认为你需要在你的问题中证明并解释这方面的技术需求,否则它只是一个非常糟糕的主意。
此外,您的问题标题指定“随机” - 但随机部分在哪里?你究竟要做的是什么?
基本上有多种更好的方法可以做到这一点,而不是尝试使用String作为主键,至少基于你在问题中提供的信息到目前为止。
答案 1 :(得分:2)
除非你有这样做的非常非常好的理由,否则不要这样做。生成自己的密钥似乎是一个好主意,直到它导致故障。
相反,请创建一个具有唯一索引的辅助键,并将其用于此目的。
答案 2 :(得分:0)
您可以声明替代ID列,也可以定义自己的密钥。
例如:
class Customer < ActiveRecord::Base
self.primary_key = "C_"+ #your column
end