2016-07-29 16 views
0

我可以在我的應用程序中使用的網址查看任何用戶」對象的show頁面覆蓋默認的路由/路徑幫手在軌使用其他的東西比`id`場

/users/:id 
# eg. /users/7 

除了使用id從我的數據庫,我想使用我爲每個用戶生成的唯一哈希ID。它看起來更加整潔,並避免將我的順序DB信息

/users/kF87sl8H2 

但是我失去了我用以前使用的路由路徑幫手的便利 - user_path(@user)。我現在必須在多個地方替換它user_path(id: @user.hash_id)

有沒有辦法保留舊的路由幫手,只是通過它我的@user實例?我認爲它涉及覆蓋路徑幫手莫名其妙?

此外,勉強相關 - 是否有圍繞生成這些哈希ID的最佳做法?我只打算使用SecureRandom.hex,但我知道Google+僅使用數字,而Youtube使用不同的大小寫字母

例如, https://www.youtube.com/watch?v=dQw4w9WgXcQ

有沒有一種很好的方法來生成這些?

謝謝!

回答

1

試試這個。

resources :users, param: :hash_id 

添加param到你的路由文件,如上面的model fieldresources,並在控制器更改爲以下find方法。

@user = User.find_by(hash_id: params[:hash_id]) 

Here是同樣的officail文檔。

2

我相信你能做到以下覆蓋路線輔助方法,爲您的用戶類

class User 
    def to_param 
    hash_id 
    end 
end