【问题标题】:Change Friendly_ID Sequence Number Rails更改 Friendly_ID 序列号 Rails
【发布时间】:2013-01-27 00:24:15
【问题描述】:

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

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

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

【问题讨论】:

    标签: ruby-on-rails friendly-id


    【解决方案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
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-06-13
      • 2023-03-25
      • 1970-01-01
      • 2013-03-26
      • 2013-09-19
      • 2015-02-12
      • 1970-01-01
      相关资源
      最近更新 更多