Странное поведение категории, так как она начинается с цифры

Привет, друзья,

Недавно после обновления до последней версии две из моих категорий указывают на одну и ту же (например, у вас есть Категория 1 и Категория 2, и обе показывают содержимое Категории 1). Это поведение уже довольно странное, поэтому, пытаясь «разобраться», я попытался изменить настройки Категории 2, которая отображала неправильные сообщения. Изменения не сохранялись, несмотря на множество попыток.

Однако я попробовал изменить URL категории на что-то другое, чтобы проверить, заставит ли это систему перезагрузиться. Теперь при клике на категорию Discourse просто зависает в состоянии перезагрузки, не обновляя URL на адрес этой категории. Таким образом, если я что-то упускаю, теперь я не могу редактировать категорию, поскольку, насколько я понимаю, для редактирования нужно зайти в неё.

Мы уже пересобрали наш экземпляр и сделали всё возможное, но ничего не изменилось. Есть ли у кого-нибудь предложения, что делать?

Заранее спасибо.

Посмотрите, может быть, на постоянные ссылки? Постоянная ссылка создается при переименовании категории. Возможно, именно это вызывает проблему (хотя, думаю, если бы дело было в этом, это было бы очевидно, но других идей у меня нет).

Спасибо за ваше предложение, @pfaffman.

Действительно, для категории существует постоянная ссылка, но у меня по-прежнему наблюдается то же странное поведение.

Пока я экспериментировал с постоянными ссылками, я, кажется, понял проблему: у «Категории 1» обычное имя (например, «Категория»), а у «Категории 2» имя-число (например, «11»). Похоже, происходит следующее: поскольку у «Категории 1» идентификатор категории (Category ID) совпадает с числовым именем «Категории 2», всё идёт не так.

Поскольку я изменил имя на большее число просто для теста (с «11» на «111»), страница застряла в состоянии загрузки… Возможно, это потому, что система ищет идентификатор категории «111»? Кто-нибудь может подтвердить, что такое возможно?

Начинается ли название категории с цифры? Это может быть проблемой.

Да, это буквально число. :sweat:

Продолжил расследование:

  • Добавил постоянные ссылки как для старого (“11”), так и для нового (“111”) названия. Эффекта нет, страница продолжает загружаться (пришлось угадывать ID категории, не знаю, есть ли способ его где-то проверить).

  • Хочу добавить, что затронутая категория является подкатегорией (упоминаю это, так как, глядя на URL, не знаю, влияет ли это на вывод). То есть это что-то вроде /c/ParentCategory/111.

  • Есть ли способ управлять категорией, если у вас нет к ней доступа? Например, попытаться изменить URL или что-то в этом роде?

Снова здравствуйте,

Пытался пробовать разные варианты в рамках своих ограниченных знаний. Если кто-то не подскажет, как редактировать категорию, не заходя в неё, у меня больше идей нет… Есть ли способ «переместить» все темы из одной категории в другую?

Поскольку я, похоже, не могу решить это самостоятельно, возможно, для улучшения удобства использования можно переместить её в другую категорию, а «зомби-категорию» оставить до тех пор, пока кто-нибудь не придумает что-то лучшее (потому что, насколько я помню, удалить категорию, не заходя в неё, нельзя, поэтому она останется в списке пустой).

:warning: Сделайте резервную копию вашего сайта перед выполнением команд!

cd /var/discourse
./launcher enter app
rails c
Category.find_by_slug('SLUG-ИСХОДНОЙ-КАТЕГОРИИ').id
Category.find_by_slug('SLUG-КАТЕГОРИИ-НАЗНАЧЕНИЯ').id
exit

Замените SLUG-ИСХОДНОЙ-КАТЕГОРИИ и SLUG-КАТЕГОРИИ-НАЗНАЧЕНИЯ на соответствующие slugs исходной и целевой категорий. В результате вы получите два ID.

rake categories:move_topics[ID-ИСХОДНОЙ-КАТЕГОРИИ,ID-КАТЕГОРИИ-НАЗНАЧЕНИЯ]

Например:

rake categories:move_topics[11,27]
./launcher enter app
rails c
c=Category.find(ID-ИСХОДНОЙ-КАТЕГОРИИ)
c.destroy

Привет @dax,

Извините за поздний ответ. Я протестировал, выполнил указанные шаги и решил свою проблему. Большое спасибо за вашу помощь.

Я хотел бы как-то отплатить (хотя мои навыки программирования не очень хороши). Есть ли возможность добавить проверку, чтобы категории не могли быть числами? Хотел бы помочь с этим.

Спасибо всем.

Спасибо, но наши инженеры уже подготовили исправление, которое предотвращает вставку цифр в слайги категорий. Как вы заметили, сейчас использование «11» в качестве названия категории допустимо, однако слайг категории необходимо изменить на такой, который не начинается с цифры, например cat-11.