2

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

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

我如何实现类似上面的东西?如何避免碰撞?我已经研究过 MD5,这似乎符合我想要完成的目标 - 但更短。如果这使方法具有确定性,我也愿意花时间播种。

我会喜欢关于这个主题的任何反馈或指示。谢谢!

编辑: 我想到的一个解决方案是创建一个充满每个排列的表,然后根据需要从表中随机选择,并在使用后删除。这是一个不好的方法吗?

4

3 回答 3

1

看看这个SO 线程;它有很多好的建议。尤其是Simone Carletti的最后一个答案,它指向了这篇文章

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

于 2012-08-29T03:09:00.173 回答
0

这个叫做 alphadecimal 的 gem可能可以帮助你。

于 2012-08-29T06:27:20.003 回答
0

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

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

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

于 2012-08-29T05:58:40.507 回答