我使用Rails的應用程序,我腳手架的用戶數據庫。我爲每個用戶都有一個show.html.erb頁面,但是當前的URL是/ users/1或/ users/2,我希望這個URL是一個隨機數或創建的時間戳。所以像/ users/201109123121或甚至只是一個隨機; y生成的數字。Rails更改默認URL的
有沒有辦法做到這一點?
我使用Rails的應用程序,我腳手架的用戶數據庫。我爲每個用戶都有一個show.html.erb頁面,但是當前的URL是/ users/1或/ users/2,我希望這個URL是一個隨機數或創建的時間戳。所以像/ users/201109123121或甚至只是一個隨機; y生成的數字。Rails更改默認URL的
有沒有辦法做到這一點?
是的,在你的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])
添加到您的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的點(通用唯一標識符)
+1這個不是一個好主意的競爭條件的可能性;如果它真的很重要,請考慮使用GUID。 –