我可以使用网址
在我的应用中查看任何用户对象的show
页面
/users/:id
# eg. /users/7
我想使用我为每个用户生成的唯一哈希ID,而不是使用我的数据库中的id
。它看起来更整洁,避免暴露我的顺序数据库信息
/users/kF87sl8H2
但是我失去了使用我之前使用的路径路径助手的便利性 - user_path(@user)
。我现在必须使用user_path(id: @user.hash_id)
有没有办法保留旧的路由助手并将其传递给我的@user
实例?我认为它涉及以某种方式覆盖路径助手?
此外,与边缘相关 - 是否有最佳做法来生成这些哈希ID?我刚刚使用SecureRandom.hex
,但我知道Google+仅使用数字而Youtube使用不同的大小写字母
e.g。 https://www.youtube.com/watch?v=dQw4w9WgXcQ
有没有一种很好的方法来生成它们?
谢谢!
答案 0 :(得分:2)
我相信您可以执行以下操作来覆盖User类的路径助手方法
module.exports = farm
module.exports.end = end
答案 1 :(得分:1)
试试这个。
resources :users, param: :hash_id
使用param
将resources
与model field
一起添加到路径文件中,然后更改控制器中的find
方法,如下所示。
@user = User.find_by(hash_id: params[:hash_id])
Here是相同的裁决文件。