# Смена категории: «У этой темы есть недопустимые теги»

**URL:** https://meta.discourse.org/t/changing-category-this-topic-has-tags-that-arent-allowed/122769
**Category:** Bug
**Created:** [12.Июль.2019 07:29:57 UTC](https://meta.discourse.org/t/changing-category-this-topic-has-tags-that-arent-allowed/122769 "2019-07-12T07:29:57Z")
**Posts on this page:** 8
**Page:** 1

<div class="post-metadata">

### Author: ![erohmensing](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/erohmensing/32/149116_2.png) [@erohmensing](https://meta.discourse.org/u/erohmensing)
#### Post date: [12.Июль.2019 07:29:57 UTC](https://meta.discourse.org/t/changing-category-this-topic-has-tags-that-arent-allowed/122769/1 "2019-07-12T07:29:57Z")

</div>

При смене категории темы, если у темы есть теги, не разрешённые в новой категории, обновление категории не происходит. Это нормально — однако, если я затем попробую удалить эти теги и одновременно обновить категорию и теги, система сообщает, что теги всё ещё присутствуют, и не позволяет сохранить изменения.

Чтобы обойти это, мне приходится удалять теги, обновлять страницу, а затем изменять тему.

У меня есть видеозапись экрана с демонстрацией проблемы, если вы разрешите загрузить файл формата .mov. 🙂

---

<div class="post-metadata">

### Author: ![codinghorror](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/codinghorror/32/110067_2.png) [@codinghorror](https://meta.discourse.org/u/codinghorror)
#### Post date: [12.Июль.2019 07:49:05 UTC](https://meta.discourse.org/t/changing-category-this-topic-has-tags-that-arent-allowed/122769/2 "2019-07-12T07:49:05Z")

</div>

> [@erohmensing](#):
>
> При смене категории поста, если у поста есть теги, которые не разрешены в новой теме

Вы имеете в виду «если у поста есть теги, которые не разрешены в новой категории»?

---

<div class="post-metadata">

### Author: ![erohmensing](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/erohmensing/32/149116_2.png) [@erohmensing](https://meta.discourse.org/u/erohmensing)
#### Post date: [12.Июль.2019 09:55:26 UTC](https://meta.discourse.org/t/changing-category-this-topic-has-tags-that-arent-allowed/122769/3 "2019-07-12T09:55:26Z")

</div>

Да, именно, ой (я часто путаю категории и темы)

---

<div class="post-metadata">

### Author: ![erohmensing](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/erohmensing/32/149116_2.png) [@erohmensing](https://meta.discourse.org/u/erohmensing)
#### Post date: [22.Июль.2019 12:41:27 UTC](https://meta.discourse.org/t/changing-category-this-topic-has-tags-that-arent-allowed/122769/4 "2019-07-22T12:41:27Z")

</div>

@codinghorror, вам удалось воспроизвести это? Дайте знать, если нужна дополнительная информация или видео.

---

<div class="post-metadata">

### Author: ![simon](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/simon/32/339122_2.png) [@simon](https://meta.discourse.org/u/simon)
#### Post date: [22.Июль.2019 17:42:05 UTC](https://meta.discourse.org/t/changing-category-this-topic-has-tags-that-arent-allowed/122769/5 "2019-07-22T17:42:05Z")

</div>

Мне удалось воспроизвести проблему. Вот сообщение, которое я получаю после удаления любых недопустимых тегов и попытки повторно категоризировать тему:

 ![image](https://global.discourse-cdn.com/meta/original/3X/4/b/4b16bd8b584f27d54d70c78258c9a23fff4dd3ed.png)

Кавычки на этом скриншоте — это два одинарных знака кавычки.

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

---

<div class="post-metadata">

### Author: ![eviltrout](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/eviltrout/32/5275_2.png) [@eviltrout](https://meta.discourse.org/u/eviltrout)
#### Post date: [22.Июль.2019 17:49:00 UTC](https://meta.discourse.org/t/changing-category-this-topic-has-tags-that-arent-allowed/122769/6 "2019-07-22T17:49:00Z")

</div>

Это действительно странно, @j.jaffeux — не могли бы вы разобраться? Беглый взгляд на код показывает, что для этого сообщения уже есть проверка `empty?`, поэтому я задаюсь вопросом, не воспринимается ли параметр `tags` как строка вместо списка значений.

---

<div class="post-metadata">

### Author: ![j.jaffeux](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/j.jaffeux/32/60297_2.png) [@j.jaffeux](https://meta.discourse.org/u/j.jaffeux)
#### Post date: [23.Июль.2019 09:16:46 UTC](https://meta.discourse.org/t/changing-category-this-topic-has-tags-that-arent-allowed/122769/8 "2019-07-23T09:16:46Z")

</div>

Вот и всё. Я также исправил ещё одну ошибку, упростил код и добавил тесты заодно:

> <https://github.com/discourse/discourse/pull/7921>
>
> \- will ensure this tag is not restricted to another category, and than this cate…gory can actually use it
> \- will clean tags param, in case client is sending an empty array, eg: \[""\], this could be solved client-side, but we ensure it won't happen ever this way

---

<div class="post-metadata">

### Author: ![j.jaffeux](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/j.jaffeux/32/60297_2.png) [@j.jaffeux](https://meta.discourse.org/u/j.jaffeux)
#### Post date: [23.Июль.2019 15:23:48 UTC](https://meta.discourse.org/t/changing-category-this-topic-has-tags-that-arent-allowed/122769/9 "2019-07-23T15:23:48Z")

</div>


