如何制作长度为16个字符并且没​​有碰撞的混淆id

时间:2013-09-22 21:49:42

标签: ruby-on-rails

我想要做的是在我显示用户网址时制作一个模糊ID,我想要一个长度为正好16个字符的模糊ID,以及没有冲突,例如代替

http://localhost:3000/users/2

我想要这样的事情:

http://localhost:3000/users/3a5643f943cc3a44

我已经在其他帖子herehere以及其他帖子中找到了同样的问题......但无法找到我想要的答案。

=========== 更新 ===========

自从我发布这个问题以来已经有好几年了,我只想提一下,我在最近的所有项目中使用了一个名为hashids的超级有用的宝石,它直截了当且易于使用使用:)

1 个答案:

答案 0 :(得分:1)

我建议使用SecureRandom.urlsafe_base64。以下相关问题也可以提供帮助:Best way to create unique token in Rails?

16个字符是默认长度(但长度是可变的,如文档中所示:http://www.ruby-doc.org/stdlib-1.9.3/libdoc/securerandom/rdoc/SecureRandom.html#method-c-urlsafe_base64