Ruby生成唯一的整数用作主键

时间:2011-08-31 09:03:48

标签: ruby-on-rails ruby

我需要生成一个唯一的整数,该整数将分配给rails应用程序中的id字段。这样做的最佳方式是什么? (使用通常的自动增量不是一个选项,它必须是一个整数。)

3 个答案:

答案 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