更改Friendly_ID序列号轨道

时间:2013-01-27 00:24:16

标签: ruby-on-rails friendly-id

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

我知道我可以在哪里更改“sequence_separator”,但却无法找到我称之为“音序器”的内容。我的帖子每年只会复制一次,所以我想在年底添加年份而不是随机数。

更新1 Yannick,谢谢你指出我正确的方向。对该方法进行了一些研究,并found documentationgood question帮助我将它们整合在一起。

  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添加记录(即将上传)时,它也不会产生slu ..我认为最好将记录ID留在URL中,并在末尾添加实际上不用于查找记录的文本。

1 个答案:

答案 0 :(得分: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

未经测试但似乎在最新版本中位于正确的位置 你使用的是哪个版本?