1

すぐに使用できる Friendly_ID は、同様のエントリが存在する場合、スラッグの末尾に「--2」、「--3」... を追加します。

「sequence_separator」を変更できる場所はわかりましたが、「sequencer」と呼ぶものを見つけるのに苦労しています。私の投稿は 1 年に 1 回だけ重複するので、最後に乱数ではなく年を追加したいと思います。

Update 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 を使用してレコードを追加する (近日中にアップロードする予定) 場合にもスラッグは生成されません。URL にレコード ID を残して、実際にはレコードを見つけるために使用されないテキストを最後に追加するのが最善かもしれないと考えています。

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 に答える