0

我看过很多 Railscast(感谢 Ryan),我需要回忆我在其中一个中看到的一些代码,但我的问题是我不记得在哪里找到它。

我可以使用下面的代码生成一个 5 位代码,这可以在一个方法中找到:

5.times.map { [*'A'..'Z'].sample }.join

但我需要能够在保存之前确保它是独一无二的。我记得 Ryan 在模型方法中使用某种循环来检查它是否是唯一的,然后再保存。

你能帮我吗?

4

2 回答 2

2

http://railscasts.com/episodes/274-remember-me-reset-password是您要查找的页面:

def generate_token(column)
  begin
    self[column] = SecureRandom.urlsafe_base64
  end while User.exists?(column => self[column])
end

因此,您可以用SecureRandom.urlsafe_base64自己的代码替换该部分。

于 2013-10-01T18:26:14.127 回答
1

首先,将您的东西替换为:SecureRandom.hex(5)

然后我得到你正在寻找的东西,我敢打赌是这样的:

value   = true
while value
  random = SecureRandom.hex(5)
  value  = Model.where(column: random).exists?
end
#here you have an unique `random`
于 2013-10-01T18:25:10.607 回答