Rails字符串唯一ID

时间:2012-08-29 02:51:02

标签: mysql ruby ruby-on-rails-3

我想创建一个具有包含基于字符串的唯一标识符的属性的模型。

我只希望唯一的字符串长3个字符,并且由字母(仅小写字母)和数字组成。

我如何实现上述内容?我该如何避免碰撞?我已经研究过MD5,这似乎与我想要完成的事情相似 - 但更短。如果这使得方法具有确定性,我也愿意花一点时间。

我会喜欢有关此主题的任何反馈或指示。谢谢!

修改 我想到的一个解决方案是创建一个充满每个排列的表,然后根据需要从表中随机选择,并删除一次使用。这是一个糟糕的方法吗?

3 个答案:

答案 0 :(得分:1)

查看此SO thread;它有很多好的建议。特别是Simone Carletti指向此post的最后一个答案。

上面的帖子有很多选项。我喜欢并可能对您有用的是使用rufus-mnemo gem

答案 1 :(得分:0)

因此,在阅读了一些问题后,我决定推出解决方案。答案与任何人的建议完全不同。

我创建了一个用于存储代码的表。我根据我想要使用的字符编写了一个ruby脚本,用每3个字母的组合填充这个表。然后在我的模型上,如果尚未分配代码,我有一个before_save方法为实例分配代码。

这种方法可确保在before_save中分配代码时永远不会发生冲突。最慢的部分是表的生成,但是因为我只需要处理这个就可以了。

答案 2 :(得分:0)

This gem called alphadecimal也许可以帮到你。