現在、以下のタイトルのスラッグ版を作成中です。
title_slug = self.title.downcase.strip.gsub(' ', '-').gsub(/[^\w-]/, '')
場合によってはスラッグを受け取り、元の名前に戻す必要があります。
ruby で上記のコードの逆 (スラッグ名を元の名前に戻す) を行う簡単な方法はありますか?
うーん、ダメ。文字列から情報を削除しているため(たとえば、英数字ではないすべての文字を削除している)、後でそれらを再構築することはできません。
ダッシュをスペースに安全に戻すことさえできません-それらは元の文字列のダッシュであった可能性があります。(@XavierHoltに感謝します!)
あなたのスラグ化機能:
.downcase.strip.gsub(' ', '-').gsub(/[^\w-]/, '')
は明らかに非可逆関数であるため、単純に戻ることはできません。戻る必要がある場合は、いくつかのオプションがあります。
どちらの場合でも、スラッグでクエリを実行すると重複が発生するため、最初に重複を防止するか (一意性を強制するようにスラッグを変更することにより)、必要な結果を選択する方法を見つけます。