ユーザーグループ「ミュートカテゴリ」のメンバーカテゴリ通知が更新されていません

ユーザーグループのミュートカテゴリを更新し、「既存のユーザーを更新しますか?」に「はい」と答えても、更新されないようです。たとえば、このユーザー(ID: 8)はグループ(ID: 42)のメンバーですが、多くの 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 の通知レベルを表示します
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 の通知レベルを表示します(はるかに多い)
```sql
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. ユーザーグループ管理に移動し、まだユーザーに適切に更新されていないカテゴリのデフォルトをリセットします。(例:グループメンバーが「サポート」カテゴリを適切にミュートしていない場合、ミュートされたカテゴリからそのカテゴリを削除します。そのカテゴリが以前「通常」にあった場合は、「通常」にリセットします)
  2. グループを保存し、「既存のユーザーを更新しますか」という質問には「いいえ」と答えます。
  3. グループのカテゴリ通知を目的のカテゴリ通知に変更します。
  4. グループを保存し、「既存のユーザーを更新しますか」という質問には「はい」と答えます。

これで問題なく動作するはずです!

ちなみに、この動作が正しいかどうかについては判断しませんが、文書化されると良いかもしれません :slight_smile:

「いいね!」 1

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