2014-10-29 47 views

回答

1

如果您愿意,您可以使用UUID。我使用postgres作为我的数据库,它现在有一个UUID数据类型,可以很容易地用作数据库表的主键。我还使用代码将UUID“压缩”到22个字符(有关信息,请参阅How can I shorten a UUID to a specific length?),然后将其用作ID。这需要很少的代码。

如果需要,也可以使用SecureRandom(http://ruby-doc.org/stdlib-2.1.2/libdoc/securerandom/rdoc/SecureRandom.html)使用普通的随机字符串,但有多种方法可以实现。

+0

感谢 - 因为这些职位可能会用作用户引用我想创建短于22个字符的东西。使用随机字符串字符是不好的形式吗?它们可以映射到UUID(用于内部参考目的)并且它们对于我的应用程序是否是唯一的? – asaignment 2014-10-29 22:35:36

+0

在这种情况下,您需要使用SecureRandom(上面的链接)创建一个较短的字符串,并将其分别存储在数据库中,检查唯一性并在碰撞发生时生成另一个字符串。我有一些应用程序使用“before_create”或“before_validation”回调来创建标识符。对于这样的表格,我留下了一个我的应用程序内部使用的标准数字ID。您可以覆盖“to_param”以使其使用您的其他密钥来访问网址。 – 2014-10-30 01:41:58

相关问题