Когда я пытаюсь создать числовой тег, например 2026, это работает, если нет тега с тем же идентификатором 2026. Если этот идентификатор уже используется, я получаю существующий тег вместо 2026.
Я почти уверен, что это старая ошибка, которая когда-то была исправлена. Или мне кажется, и вообще не стоит использовать числовые теги?
В любом случае, я считаю это ошибкой — и очень хочу использовать годы в качестве тегов.
Например, если тег называется 2026, а его идентификатор (ID) равен 3, то канонический URL должен выглядеть так:
/tag/2026/3
Неоднозначным является старый/устаревший формат URL:
/tag/2026
Его можно интерпретировать как «тег с ID 2026», поэтому, если существует другой тег с таким ID, ссылка может вести на него, а не на тег с именем 2026.
Где вы пытаетесь использовать или получить доступ к тегу? Если ссылка генерируется самим Discourse, я ожидаю, что будет использоваться канонический URL формата /tag/:slug/:id. Если вы вводите URL вручную, используете старую сохранённую ссылку, ссылку из пользовательской темы/плагина или импортированный/боковой/пользовательский URL, то он может по-прежнему использовать неоднозначный устаревший формат и вести на неправильный тег.
По возможности, я думаю, мы должны рассматривать :foo в /tag/:foo как всегда являющийся слаг, и требовать формат /tag/:foo/:id для идентификаторов, где :foo может быть любым символом (например, использовать -, когда вы не знаете или вам все равно).
Это поможет для обратной совместимости, а также в случаях, когда слаг известен, но идентификатор нет, что часто бывает с тегами, где имя является обычно используемой ссылкой.
Идентификаторы сейчас в основном нужны для поддержки локализации.
Спасибо за конкретный пример. Мне удалось воспроизвести проблему, и я работаю над её исправлением.
Во время тестирования я заметил, что числовые теги также не создаются, если у них нет соответствующего идентификатора. (например, попытка создать тег 2939858339 не приведёт ни к чему, и тема не будет помечена ни одним тегом)