2014-10-29 49 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

相關問題