# Группа пользователей 'muted categories' не обновляет уведомления о категориях участников

**URL:** https://meta.discourse.org/t/user-group-muted-categories-not-updating-members-category-notifications/290063
**Category:** Support
**Created:** [30.Декабрь.2023 04:40:53 UTC](https://meta.discourse.org/t/user-group-muted-categories-not-updating-members-category-notifications/290063 "2023-12-30T04:40:53Z")
**Posts on this page:** 3
**Page:** 1

<div class="post-metadata">

### Author: ![sweetbeems](https://avatars.discourse-cdn.com/v4/letter/s/7c8e57/32.png) [@sweetbeems](https://meta.discourse.org/u/sweetbeems)
#### Post date: [30.Декабрь.2023 04:40:53 UTC](https://meta.discourse.org/t/user-group-muted-categories-not-updating-members-category-notifications/290063/1 "2023-12-30T04:40:53Z")

</div>

Всякий раз, когда я обновляю скрытые категории в группе пользователей и подтверждаю действие «Обновить существующих пользователей?», изменения, похоже, не применяются. Например, посмотрите на пользователя #8, который является участником группы #42, но у него отсутствует множество записей в таблице category\_user:

> **РЕЗУЛЬТАТЫ SQL**
>
> - Подтверждение членства пользователя #8 в группе #42
> 
> ```plaintext
> SELECT gu.*, g.name
> FROM group_users gu
> JOIN groups g ON gu.group_id = g.id
> WHERE user_id=8 and gu.group_id = 42;
> 
> ```
> 
> ```plaintext
> id | group_id | user_id | created_at | updated_at | owner | notification_level | first_unread_pm_at | name        
> ------+----------+---------+----------------------------+----------------------------+-------+--------------------+----------------------------+-------------------
> 4207 | 42 | 8 | 2023-07-03 11:36:43.828233 | 2023-07-03 11:36:43.828233 | f | 3 | 2023-12-29 22:52:43.371588 | japanese-learners
> 
> ```
> 
> - Показать текущие уровни уведомлений пользователя #8
> 
> ```plaintext
> SELECT cu.*, c.name, c.parent_category_id
> FROM category_users cu
> JOIN categories c ON cu.category_id = c.id
> WHERE cu.user_id = 8;
> 
> ```
> 
> ```plaintext
> id | category_id | user_id | notification_level | last_seen_at | name | parent_category_id 
> -------+-------------+---------+--------------------+--------------+---------------+--------------------
> 42289 | 1 | 8 | 0 | | Uncategorized |                   
> 5981 | 5 | 8 | 1 | | Reading | 7
> 7981 | 6 | 8 | 1 | | Watching | 7
> 215 | 7 | 8 | 1 | | Japanese |                   
> 6981 | 9 | 8 | 1 | | Book Clubs | 5
> 214 | 10 | 8 | 0 | | Korean |                   
> 2386 | 11 | 8 | 0 | | Reading | 10
> 4384 | 12 | 8 | 0 | | Watching | 10
> 3385 | 13 | 8 | 0 | | Book Clubs | 11
> 36995 | 16 | 8 | 0 | | German |                   
> 
> ```
> 
> - Показать уровни уведомлений из группы #42 (значительно больше)
> 
> ```plaintext
> SELECT gcnd.*, c.name, c.parent_category_id
> FROM group_category_notification_defaults gcnd
> JOIN categories c ON gcnd.category_id = c.id
> WHERE group_id=42;
> 
> ```
> 
> ```plaintext
> id | group_id | category_id | notification_level | name | parent_category_id 
> -----+----------+-------------+--------------------+---------------+--------------------
> 1 | 42 | 10 | 0 | Korean |                   
> 8 | 42 | 7 | 1 | Japanese |                   
> 11 | 42 | 13 | 0 | Book Clubs | 11
> 12 | 42 | 11 | 0 | Reading | 10
> 14 | 42 | 12 | 0 | Watching | 10
> 26 | 42 | 9 | 1 | Book Clubs | 5
> 27 | 42 | 6 | 1 | Watching | 7
> 28 | 42 | 5 | 1 | Reading | 7
> 97 | 42 | 16 | 0 | German |                   
> 174 | 42 | 21 | 0 | Book Clubs | 18
> 177 | 42 | 18 | 0 | Reading | 16
> 178 | 42 | 22 | 0 | Reading | 17
> 179 | 42 | 23 | 0 | Watching | 17
> 180 | 42 | 17 | 0 | Spanish |                   
> 181 | 42 | 19 | 0 | Watching | 16
> 182 | 42 | 25 | 0 | Book Clubs | 22
> 367 | 42 | 1 | 0 | Uncategorized |                   
> 
> ```

Есть ли способ запустить процесс «update\_existing\_users» вручную в консоли Rails? Я мало знаком с Rails, поэтому не смог найти его в коде. Думаю, было бы полезно попробовать запустить его вручную и проверить, заключается ли проблема в самом процессе обновления или в его запуске.

Дайте знать, если у кого-то есть идеи или помощь!

Спасибо

Дополнительная информация:  
Мой сайт: [https://forums.learnnatively.com/](https://forums.learnnatively.com/)  
Версия Discourse: 3.2.0.beta4-dev (46eec95719)

---

<div class="post-metadata">

### Author: ![sweetbeems](https://avatars.discourse-cdn.com/v4/letter/s/7c8e57/32.png) [@sweetbeems](https://meta.discourse.org/u/sweetbeems)
#### Post date: [01.Январь.2024 07:59:19 UTC](https://meta.discourse.org/t/user-group-muted-categories-not-updating-members-category-notifications/290063/2 "2024-01-01T07:59:19Z")

</div>

Итак, после более тщательного анализа выяснилось, что код обновляет только _изменения_ в уведомлениях по умолчанию для категорий на уровне группы пользователей… см. [здесь обработку изменений](https://github.com/discourse/discourse/blob/baa7c4cec742f2275e5c8712c692076df0bfbac2/app/controllers/groups_controller.rb#L855-L856) и [здесь обновление в БД](https://github.com/discourse/discourse/blob/baa7c4cec742f2275e5c8712c692076df0bfbac2/app/controllers/groups_controller.rb#L924-L941).

Это означает, что если по какой-либо причине ваш первоначальный процесс обновления группы не обновил существующие объекты пользователей, повторное сохранение группы (даже с изменениями) не обязательно вызовет обновление уведомлений по умолчанию для категорий для участников группы.

Я не до конца понимаю, почему мой первоначальный процесс обновления не сработал, но так как я использовал вызов API, а не панель администратора, возможно, я указал неверный параметр ‘update\_existing\_users’ (я сделал json-дамп значения ‘True’ на Python).

В любом случае, мне удалось решить эту проблему.

**Решение:**

1. Перейдите в админку группы пользователей и сбросьте любые настройки категорий по умолчанию, которые, как кажется, ещё не обновлены у пользователей. (Например: если у участников группы не установлено правильное «игнорирование» для категории «Поддержка», удалите эту категорию из списка игнорируемых. Если эта категория ранее была в статусе «нормально», верните её в «нормально».)
2. Сохраните группу и ответьте «нет» на вопрос «обновить существующих пользователей».
3. Измените настройки уведомлений о категориях группы на желаемые.
4. Сохраните группу и ответьте «да» на вопрос «обновить существующих пользователей».

Вуаля, теперь всё должно работать!

Кстати, я не имею никакого мнения о том, является ли такое поведение правильным или нет. Однако его, вероятно, стоит задокументировать 🙂

---

<div class="post-metadata">

### Author: ![system](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/system/32/443519_2.png) [@system](https://meta.discourse.org/u/system)
#### Post date: [31.Январь.2024 07:59:30 UTC](https://meta.discourse.org/t/user-group-muted-categories-not-updating-members-category-notifications/290063/3 "2024-01-31T07:59:30Z")

</div>

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.
