我看过很多Railscasts(感谢Ryan),我需要回忆一下我在其中一个中看到的代码,但我的问题是我记不清哪里可以找到它。
我可以使用下面的代码生成一个5位数的代码,这可以在方法中找到:
5.times.map { [*'A'..'Z'].sample }.join
但是我需要能够在保存之前确保它是唯一的。我记得Ryan在模型方法中使用某种循环来检查它在保存之前是否是唯一的。
你能帮忙吗?
答案 0 :(得分: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
部分。
答案 1 :(得分: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`