1

开箱即用,当存在类似条目时,Friendly_ID 会将“--2”、“--3”... 添加到 slug 的末尾。

我知道我可以在哪里更改“sequence_separator”,但是在找到我称之为“sequencer”的东西时遇到了麻烦。我的帖子每年只会重复一次,所以我想在末尾添加年份而不是随机数。

更新 1 Yannick,感谢您为我指明正确的方向。对该方法进行了一些研究,并找到了文档和一个很好的问题来帮助我把它放在一起。

  extend FriendlyId
  friendly_id :race_name_and_year, use: :slugged
  before_validation :race_name_and_year

  def resolve_friendly_id_conflict(candidates)
    candidates.first + friendly_id_config.sequence_separator + SecureRandom.uuid
  end

  def normalize_friendly_id(value)
    value.to_s.parameterize
  end

  def should_generate_new_friendly_id?
    slug.blank?
  end  

  def race_name_and_year
    self.slug ||= normalize_friendly_id("#{start.year}-#{name}")
  end

虽然这可行,但它看起来相当复杂和混乱。当我通过 Active Admin 添加记录(即将上传)时,它也不会生成 slug。我认为最好将记录 ID 留在 URL 中,并在末尾添加实际上不用于查找记录的文本。

4

1 回答 1

1

通过配置似乎是不可能的。现在它实际上使用 uuid 来促进序列生成。

你可以试试这样的猴子补丁

module FriendlyId
  module Slugged

    def resolve_friendly_id_conflict(candidates)
      candidates.first + friendly_id_config.sequence_separator + Date.today.year
    end
  end
end

未经测试,但似乎在上一个版本中的正确位置您使用的是哪个版本?

于 2013-06-26T17:48:21.733 回答