在Rails URL中使用base36 / unique ID

时间:2011-04-26 15:33:11

标签: ruby-on-rails

使用RoR 2.3.8。

我已经尝试了to_param,friendly_id,最后,当我的网站走向国际时,我发现我会在Unicode转换中遇到麻烦。我计划有很多语言,重音,中文,日文,韩文等内容。所以我没有把这些标题放在我的网址中,而是计划牺牲它。是的,我只想要一个ID。

现在,我希望实施类似YouTube的内容,其中每个视频网址都以唯一ID结尾。假设ID=10的条目具有唯一ID:

http://abc.com/shops/rD4g35tQ

我希望网址是永久性的。

我不知道如何去做。有人可以给我看一些例子或给我一些提醒吗?

感谢。

2 个答案:

答案 0 :(得分:3)

您可以Base 36对ID进行编码。 36是一个很好的基数,因为数字可以用数字0-9和字母A-Z表示。

# Example with ID = 10. Convert from Base 10 to Base 36
id = 10
id.to_s(36) #=> "a"

# Convert from Base 36 back to Base 10
"a".to_i(36) #=> 10 

答案 1 :(得分:0)

如果你想生成UUID,这个lib将帮助你: https://github.com/assaf/uuid

你唯一要做的就是把一个before_create给你的对象分配一个新的uuid,你就完成了。