すぐに使用できる 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 を残して、実際にはレコードを見つけるために使用されないテキストを最後に追加するのが最善かもしれないと考えています。