我有一个产品控制器,它允许我以通常的 rails 方式访问 show 方法
product GET /products/:id(.:format) products#show
现在,我希望每个产品都有一个唯一的哈希 url,可以在根路径下访问,例如 mydomain.com/24fe3455g
最好的方法是什么?
最佳菲利普
我有一个产品控制器,它允许我以通常的 rails 方式访问 show 方法
product GET /products/:id(.:format) products#show
现在,我希望每个产品都有一个唯一的哈希 url,可以在根路径下访问,例如 mydomain.com/24fe3455g
最好的方法是什么?
最佳菲利普
您可以md5
在数据库中为每一行存储一个 - 例如计算这个 md5 id+timestamp
(作为连接字符串),然后让您的路线如下:
product GET /products/:hash(.:format) products#show
您还可以使用UUID
生成唯一 ID
首先,您需要在routes.rb
. 由于它有点“失败”,您通常会将其放在路线的尽头。查看指南以了解如何定义它: http: //guides.rubyonrails.org/routing.html
如果您想在整个应用程序中始终使用这种哈希样式的 url 而不是 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