2014-04-04 33 views
0

我想在rails中創建一個唯一的數字固定鏈接。我的問題是,我需要確保它是唯一的,有5到7個數字,並且是隨機生成的(所以不要簡單地計數)。我沒有看FriendlyID,但我不知道這是否可以提供我所需要的 - 我的永久鏈接的URL最終應該是這樣的:有沒有辦法生成一個唯一的整數永久鏈接?

www.kreelu.com/4325677

是否有功能構建還是可以提供這個的寶石?

謝謝!

+0

http://stackoverflow.com/questions/1117584/guids-in-ruby –

+0

你需要安全嗎?如果您甚至有中等數量(例如10)的有效數字,則5位數字不夠安全。你能澄清目的嗎? –

+1

我認爲你可以使用has_permalink gem。我不確定你的目的是否解決,但對你有幫助。看到網址http://haspermalink.org/ –

回答

1
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 
+0

非常感謝,一個像魅力一樣工作! –

1

假設你想創建上創建獨特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 
相關問題