我需要生成一个唯一的整数,该整数将分配给rails应用程序中的id字段。这样做的最佳方式是什么? (使用通常的自动增量不是一个选项,它必须是一个整数。)
答案 0 :(得分:21)
Ruby 1.9在UUID模块中包含SecureRandom版本4代:
> require 'securerandom'
=> true
> SecureRandom.uuid
=> "4b3a56db-4906-4a44-a262-975d80c88195"
> SecureRandom.uuid.gsub("-", "").hex
=> 56667719780883163491780810954791777167
有点冗长,但肯定是独一无二的。
答案 1 :(得分:1)
如果您不想使用securerandom
位,也可以使用.random_number()
gsub
方法:
SecureRandom.random_number(100000000000000000000000000000)
https://www.rubydoc.info/stdlib/securerandom/1.9.3/SecureRandom#random_number-class_method
答案 2 :(得分:-2)
我不明白为什么你不能使用自动增量,但是你考虑使用随机数吗?
id = rand(1000000)
while(Post.find(id) != nil)
id = rand(1000000)
end