2011-09-15 49 views
2

我使用Rails的應用程序,我腳手架的用戶數據庫。我爲每個用戶都有一個show.html.erb頁面,但是當前的URL是/ users/1或/ users/2,我希望這個URL是一個隨機數或創建的時間戳。所以像/ users/201109123121或甚至只是一個隨機; y生成的數字。Rails更改默認URL的

有沒有辦法做到這一點?

回答

1

是的,在你的User模型中定義to_param

def to_param 
    timestamp 
end 

,並定義你的模型的timestamp屬性,並將其設置在before_create

class User < ActiveRecord::Base 
    before_create :set_timestamp 

    # model code goes here 
    def set_timestamp 
    self.timestamp = created_at.to_i 
    end 

但是,如果在精確創建了兩個用戶同樣的第二,你會遇到麻煩。您可能想要使其稍微隨機。你也將現在需要基於該領域找到他們:

User.find_by_timestamp(params[:id]) 
+0

+1這個不是一個好主意的競爭條件的可能性;如果它真的很重要,請考慮使用GUID。 –

0

添加到您的Gemfile

gem 'uuidtools' 

然後做

#models/user.rb 
class User < ActiveRecord::Base 
    before_create :set_uuid 

    # model code goes here 
    def set_uuid 
     self.uuid = UUIDTools::UUID.timestamp_create.to_s 
    end 
end 

,然後請求它像這樣。

User.find_by_uuid(params[:id]) 

不同於上述答案這應該顯著減少因爲這是UUID的點(通用唯一標識符)