2

我正在为我的网站使用友好,目前我让它在 url 中显示标题

IE:/articles/hello-world

但是说当我创建页面时,它会生成一个随机数,以避免重复

IE: /articles/75475848

我知道如果我摆脱友好的 id 它会显示数字,但它会

/文章/1

/文章/2

ETC...

基本上我如何让它显示/articles/23456789(random number)而不是/articles/hello-world

谢谢

4

2 回答 2

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 的评论,不需要外部依赖!

于 2013-04-19T19:47:32.073 回答
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。

于 2013-04-19T19:31:04.880 回答