【发布时间】:2019-05-12 08:43:21
【问题描述】:
我正在使用 ahoy emails gem 进行电子邮件分析。为了跟踪电子邮件,它们只是
@ahoy_message = AhoyEmail.message_model.new
ahoy_message.token = generate_token
生成令牌的方法是这样的,
def generate_token
SecureRandom.urlsafe_base64(32).gsub(/[\-_]/, "").first(32)
end
我怀疑生成的token可能有重复,我可以检查生成的token是否每次都是唯一的,所以我试图改变token的生成方法,如下所示,
def generate_token
URI.escape(Base64.encode64 "#{Time.now.to_f},#{@mail.id}") # @mail is object in db
end
默认方法可以吗,否则我可以使用与时间相关的东西来创建唯一令牌吗?
【问题讨论】:
-
就个人而言,我会使用
SecureRandom.uuid,因为它已经作为标准库的一部分存在。但是,就像任何“唯一生成”(非事务性和不可重试)算法一样,它仍然受制于竞争条件。请参阅此SO 以获取见解。
标签: ruby-on-rails ruby-on-rails-4 time uniqueidentifier