我有一个产品控制器,允许我以通常的轨道方式访问show方法
product GET /products/:id(.:format) products#show
现在,我希望每个产品都有一个唯一的哈希URL,可以在根路径访问,例如 mydomain.com/24fe3455g
最好的方法是什么?
最佳菲利普
答案 0 :(得分:0)
你可以在数据库中为每一行存储一个md5
- 例如为id+timestamp
计算这个md5(作为连接字符串),然后让你的路由如下:
product GET /products/:hash(.:format) products#show
您还可以使用UUID
作为generatind unique id's
答案 1 :(得分:0)
首先,您需要在routes.rb
中定义匹配的路线。由于它是一种“堕落”,你通常会把它放在路线的尽头。请查看有关如何定义该指南的指南:http://guides.rubyonrails.org/routing.html
如果您希望始终在整个应用程序中使用此哈希样式的网址而不是ID,则还应在模型中实施to_param
和self.from_param
方法:http://apidock.com/rails/ActiveRecord/Base/to_param
如果您喜欢某些工具支持,也可以使用像friendly_id这样的gem:http://rubydoc.info/github/norman/friendly_id/master/file/Guide.rdoc