我对我的网站使用友好,目前我在网址上显示标题
ie:/articles/hello-world
但是当我创建页面时,它会生成一个随机数,以避免重复 所以
ie:/articles/75475848
我知道如果我摆脱了友好ID,它会显示数字但是 它将是
/物品/ 1
/ articles / 2
等...
基本上我如何让它显示/articles/23456789(random number)
而不是/articles/hello-world
由于
答案 0 :(得分:5)
似乎为每篇文章生成UUID(通用唯一标识符)可能是一个很好的解决方案。
Ruby标准库为我们提供了一个生成UUID的方法,因此您需要做的就是创建一个数据库字段,然后使用before_save
回调为每篇文章提供自己的UUID。像这样:
class Article < ActiveRecord::Base
before_save :set_uuid
def set_uuid
self.uuid = SecureRandom.uuid if self.uuid.nil?
end
end
编辑:根据@ olleolleolle的评论,无需外部依赖!
答案 1 :(得分:1)
来自FriendlyID文档:
class Person < ActiveRecord::Base
friendly_id :name_and_location
def name_and_location
"#{name} from #{location}"
end
end
bob = Person.create! :name => "Bob Smith", :location => "New York City"
bob.friendly_id #=> "bob-smith-from-new-york-city"
因此,如果您为friendly_id
提供了一个生成随机数的方法,那么该方法将用于生成slug。