在Ruby on Rails中使用随机字符串作为id?

我想在Ruby on Rails中创建类似于http://www.pastebin.com/的Web应用程序。 pastebin.com使用随机字符串来标识项目。 Ruby on Rails使用自动递增数字。 如何使Ruby on Rails也使用这些随机字符串作为项目的ID,而不是自动递增数字?

谢谢

使用保证的随机字符串生成器,base64对其进行编码,然后将其缩短为可接受的值(8个字符?)

require 'uuidtools' require 'base64' uid = UUIDTools::UUID.random_create Base64.encode64(uid)[0..7] => "Y2I2ZTQ5" 

在Rails中,您可以根据:slug列更改要加载的路由,并使用以下内容设置此值:

 before_create do self.slug = Base64.encode64(UUIDTools::UUID.random_create)[0..8] end 

我相信你可以在感兴趣的模型中覆盖to_param的实现。 这里有一个更全面的技术解释

对于香草ruby

 require 'securerandom' require 'base64' slug = Base64.encode64(SecureRandom.uuid)[0..10] => "YWVkNzZmYjI" => "MzQxMDkxY2U" 

生成一个随机字符串作为键并将其放入db表? 确保密钥是uniq?

 base="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890" (0...10).map{base[rand(base.length)]}.join