Rails 中的友好 ID gem 的随机 slug url 4

Random slug url for friendly id gem in Rails 4

有没有人用过 random_slug (https://github.com/josei/random_slug) 作为 friendly_id?它最后一次更新是 5 年前所以我不确定尝试它是否浪费时间或者即使有更好的解决方案?

基本上我有 friendly_id 工作,它会选择我的帖子的标题,而且我有一个范围,所以这些帖子对用户来说是独一无二的,但我非常希望这些帖子成为我想随机生成 URL 类似于 YouTube URL 的东西——这是否可能通过友好的 ID 实现,或者我是否以错误的方式解决这个问题,是否有其他东西可以让我的生活轻松 100 倍?

那个插件不会工作,至少它本身不会。它被设计为一个 rails 2 插件,与今天的 gems 不兼容 - 但如果你看一下它的库,它所做的就是生成一个随机字符串,正如评论中指出的那样,你可以使用 SHA1 摘要来完成.我喜欢安全随机。 (相同概念)

你的模型看起来像这样

class Post < ActiveRecord::Base
  extend FriendlyId
  friendly_id :generated_slug, use: :slugged
  def generated_slug
    require 'securerandom' 
    @random_slug ||= persisted? ? friendly_id : SecureRandom.hex(15) 
  end
end

你可以使用这种方式,传递每个 post 的 titleid,即使 title 相同,它也会为你生成新的 uniq slug,因为通过额外的 id of post.

确保使用您自己的列名称 title 或其他...

class Post < ActiveRecord::Base
  extend FriendlyId
  friendly_id :slugging, use: [:slugged, :history, :finders]

    def slugging
        Digest::SHA1.hexdigest("#{title} #{id}")[0..8]
    end
end