生成用于标识记录的唯一随机字符串

我要求能够通过唯一的密钥来识别表中的记录,在这种情况下是用户表,该密钥不会泄露表中记录的顺序。

目前我有主键字段,生成的路由如下所示:

/users/1 

但是,我希望能够生成如下路线:

 /users/kfjslncdk 

我可以在路由端,数据库端等连接所有内容。但我不确定生成唯一字符串标识符的最佳方法是在rails中。 我想做点什么:

 before_save :create_unique_identifier def create_unique_identifier self.unique_identifier = ... magic goes here ... end 

我以为我可以使用使用UUIDTools创建的guid的第一部分,但我需要检查以确保它在保存用户之前是唯一的。

任何建议将不胜感激!

 before_create :create_unique_identifier def create_unique_identifier loop do self. unique_identifier = SecureRandom.hex(5) # or whatever you chose like UUID tools break unless self.class.exists?(:unique_identifier => unique_identifier) end end 

Ruby 1.9 包含一个内置的UUID生成器: SecureRandom.uuid

  • UUID
  • uuidtools
  • 如何在Ruby中创建小的,独特的令牌

保存自己存储模糊ID的麻烦,只需用基数62(az,AZ,0-9)编码id,但自定义“数字”的顺序。 这将使得弄清楚订单变得非常复杂。

我曾经写过一个类的东西(可能需要一些重构): https : //gist.github.com/4058176