IDが存在する場合、コンポーザーで数値タグが失敗する理由

数値のタグ、つまり 2026 を作成しようとすると、同じ ID 2026 を使用するタグが存在しない場合は正常に動作します。しかし、その ID が既に使用されている場合、2026 の代わりに既存のタグが表示されてしまいます。

これは以前から存在していたバグで、いつか修正されたはずだと確信しています。それとも私の記憶が間違っていて、数値のタグはそもそも使用すべきではないのでしょうか :thinking:

いずれにせよ、私はこれをバグと見なしています。また、年をタグとして使用したいと考えています。

数値タグはサポートされるべきであり、現在の正規URL形式はこの曖昧さを回避することを目的としています。

例えば、タグ名が 2026 でタグIDが 3 の場合、正規URLは以下のようになります。

/tag/2026/3

曖昧な形式は、古い/レガシーなURLです。

/tag/2026

これは「IDが 2026 のタグ」として解釈される可能性があるため、別のタグがそのIDを持っている場合、2026 という名前のタグではなく、その別のタグに解決される可能性があります。


タグを使用しようとしている、またはアクセスしようとしている場所は哪里ですか?リンクがDiscourse自身によって生成されている場合、正規の /tag/:slug/:id URLを使用すると予想されます。URLを手動で入力している場合、古い保存されたリンク、カスタムテーマ/プラグインリンク、またはインポートされた/サイドバー/カスタムURLを使用している場合、まだ曖昧なレガシー形式を使用しており、誤ったタグに解決される可能性があります。

可能であれば、/tag/:foo 内の :foo を常にスラッグとして扱い、ID の場合は /tag/:foo/:id という形式を要求すべきだと考えます。ここで :foo は任意の文字(例:不明または気にしない場合は - を使用)とします。

これにより、後方互換性が向上するだけでなく、スラッグは既知だが ID が不明なケース(タグでは名前が一般的に使用される参照となるため、よくあるケースです)にも役立ちます。

ID は現在、主にローカライゼーションのサポートのために存在しています。

「いいね!」 1

通常、トピックを作成してタグを追加する際です。あるいは、単にタグを追加する際と言ってもよいでしょうか。

実世界の例。

トピックを書いている際、2013 というタグを作成しようとしたのですが、/tag/sahara/2013 であるため sahara が返ってきました。

前に質問しましたが :smirking_face: はい、セーフモードでも同じことが起こります。

つまり、

その通りで、少し前までその状況でした。

「いいね!」 2

具体的な例をありがとうございます。問題を再現し、修正に取り組んでいます。

テスト中に、対応するIDがない数値タグも作成されないことに気づきました。(例:タグ 2939858339 を作成しようとすると、何も行わず、トピックにタグを付与しません)

「いいね!」 2