2

我有一个产品控制器,它允许我以通常的 rails 方式访问 show 方法

product GET    /products/:id(.:format)                 products#show

现在,我希望每个产品都有一个唯一的哈希 url,可以在根路径下访问,例如 mydomain.com/24fe3455g

最好的方法是什么?

最佳菲利普

4

2 回答 2

0

您可以md5在数据库中为每一行存储一个 - 例如计算这个 md5 id+timestamp(作为连接字符串),然后让您的路线如下:

product GET    /products/:hash(.:format)                 products#show

您还可以使用UUID生成唯一 ID

于 2012-07-30T16:30:16.677 回答
0

首先,您需要在routes.rb. 由于它有点“失败”,您通常会将其放在路线的尽头。查看指南以了解如何定义它: http: //guides.rubyonrails.org/routing.html

如果您想在整个应用程序中始终使用这种哈希样式的 url 而不是 id,您还可以在模型中实现to_paramself.from_param方法:http: //apidock.com/rails/ActiveRecord/Base/to_param

如果你喜欢一些工具支持,你也可以使用像 friendly_id 这样的 gem:http ://rubydoc.info/github/norman/friendly_id/master/file/Guide.rdoc

于 2012-07-30T16:38:00.013 回答