사용자 그룹 '음소거 카테고리'에서 멤버 카테고리 알림이 업데이트되지 않음

사용자 그룹의 음소거된 카테고리(muted categories)를 업데이트하고 '기존 사용자 업데이트?'에 대해 '예’라고 선택해도, 업데이트가 적용되지 않는 것 같습니다. 예를 들어, #42 그룹의 멤버인 #8번 사용자를 보면, 많은 category_user 행이 누락되어 있습니다:

SQL RESULTS
  • #8번 사용자의 #42 그룹 소속 여부 확인
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;
  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번 사용자의 알림 수준(notification levels) 표시
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;
  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 그룹의 알림 수준 표시 (훨씬 더 많음)
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;
 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 |                   

rails 콘솔에서 이 ‘update_existing_users’ 프로세스를 수동으로 실행하는 방법이 있을까요? 저는 rails에 대해 잘 모르기 때문에 코드에서 찾을 수 없었습니다. 수동으로 실행해 보고 문제가 업데이트 프로세스 자체에 있는지, 아니면 업데이트 프로세스를 트리거하는 부분에 있는지 확인하는 것이 좋을 것 같습니다.

아무 아이디어나 도움이 있으시면 알려주세요!

감사합니다

추가 정보:
제 사이트: https://forums.learnnatively.com/
Discourse 버전: 3.2.0.beta4-dev (46eec95719)

추가 검토 결과, 이 코드는 사용자 그룹의 기본 카테고리 알림에서 변경된 부분만 업데이트하는 것으로 보입니다. 변경 처리는 여기에서, DB 업데이트는 여기에서 확인할 수 있습니다.

즉, 어떤 이유에서든 그룹에 대한 초기 업데이트 프로세스가 기존 사용자 객체를 업데이트하지 않는 경우, 그룹을 다시 저장하더라도(변경 사항이 있더라도) 그룹 멤버의 기본 카테고리 알림 업데이트가 반드시 트리거되지 않습니다.

초기 업데이트 프로세스가 트리거되지 않은 이유는 정확히 모르겠지만, 관리자 패널이 아닌 API 호출을 사용했기 때문에 ‘update_existing_users’ 매개변수를 잘못 전달했을 가능성이 있습니다 (Python의 ‘True’ 값을 JSON으로 덤프했습니다).

어쨌든 이 문제를 해결했습니다.

해결 방법:

  1. 사용자 그룹 관리자로 이동하여 아직 업데이트되지 않은 것으로 보이는 카테고리 기본 설정을 초기화하세요. (예: 그룹 멤버가 ‘Support’ 카테고리에서 음소거가 제대로 설정되어 있지 않다면, 해당 카테고리를 음소거 카테고리 목록에서 제거합니다. 해당 카테고리가 이전에 ‘normal’ 상태였다면 'normal’로 초기화합니다)
  2. 그룹을 저장하고 'update existing users’에 대해 '아니오’를 선택합니다.
  3. 그룹의 카테고리 알림을 원하는 알림 설정으로 변경합니다.
  4. 그룹을 저장하고 'update existing users’에 대해 '예’를 선택합니다.

Voila, 이제 정상적으로 작동해야 합니다!

참고로, 이 동작이 올바른 것인지에 대해서는 판단을 내리지 않겠습니다. 하지만 이 동작에 대한 문서화가 필요할 것 같습니다 :slight_smile: