我想在rails中創建一個唯一的數字固定鏈接。我的問題是,我需要確保它是唯一的,有5到7個數字,並且是隨機生成的(所以不要簡單地計數)。我沒有看FriendlyID,但我不知道這是否可以提供我所需要的 - 我的永久鏈接的URL最終應該是這樣的:有沒有辦法生成一個唯一的整數永久鏈接?
www.kreelu.com/4325677
是否有功能構建還是可以提供這個的寶石?
謝謝!
我想在rails中創建一個唯一的數字固定鏈接。我的問題是,我需要確保它是唯一的,有5到7個數字,並且是隨機生成的(所以不要簡單地計數)。我沒有看FriendlyID,但我不知道這是否可以提供我所需要的 - 我的永久鏈接的URL最終應該是這樣的:有沒有辦法生成一個唯一的整數永久鏈接?
www.kreelu.com/4325677
是否有功能構建還是可以提供這個的寶石?
謝謝!
after_validation :set_permalink
def rand_permalink #you can find a better way to exclude loop db-searches
r = rand.to_s[2..8] # 7-digit random, you can make [2..11] for 10-digits and so on
while find_by_permalink(r).present?
r = rand.to_s[2..8]
end
r
end
def set_permalink
permalink = rand_permalink unless permalink.presence
end
非常感謝,一個像魅力一樣工作! –
假設你想創建上創建獨特permalink
,你想將其存儲在數據庫和類被命名爲Post
:
validate :permalink, :uniqueness => true
before_create :create_permalink
private
def create_permalink
loop do
self.permalink = Array(1..7).map{ rand(10).to_s }.join
return if Posts.where(permalink: permalink).blank?
end
end
http://stackoverflow.com/questions/1117584/guids-in-ruby –
你需要安全嗎?如果您甚至有中等數量(例如10)的有效數字,則5位數字不夠安全。你能澄清目的嗎? –
我認爲你可以使用has_permalink gem。我不確定你的目的是否解決,但對你有幫助。看到網址http://haspermalink.org/ –