我看过很多 Railscast(感谢 Ryan),我需要回忆我在其中一个中看到的一些代码,但我的问题是我不记得在哪里找到它。
我可以使用下面的代码生成一个 5 位代码,这可以在一个方法中找到:
5.times.map { [*'A'..'Z'].sample }.join
但我需要能够在保存之前确保它是独一无二的。我记得 Ryan 在模型方法中使用某种循环来检查它是否是唯一的,然后再保存。
你能帮我吗?
我看过很多 Railscast(感谢 Ryan),我需要回忆我在其中一个中看到的一些代码,但我的问题是我不记得在哪里找到它。
我可以使用下面的代码生成一个 5 位代码,这可以在一个方法中找到:
5.times.map { [*'A'..'Z'].sample }.join
但我需要能够在保存之前确保它是独一无二的。我记得 Ryan 在模型方法中使用某种循环来检查它是否是唯一的,然后再保存。
你能帮我吗?
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
自己的代码替换该部分。
首先,将您的东西替换为:SecureRandom.hex(5)
然后我得到你正在寻找的东西,我敢打赌是这样的:
value = true
while value
random = SecureRandom.hex(5)
value = Model.where(column: random).exists?
end
#here you have an unique `random`