-
Notifications
You must be signed in to change notification settings - Fork 71
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Discordアカウント名が不正だと退会時にエラーが発生する不具合を修正 #7515
Discordアカウント名が不正だと退会時にエラーが発生する不具合を修正 #7515
Conversation
f22f9f7
to
0a38c4b
Compare
0a38c4b
to
24d56fa
Compare
@natsuto6 こちら、よろしければレビューお願いできますでしょうか? |
@ogawa-tomo |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@ogawa-tomo
動作、コードともに特に問題ないかと思いますので、Approveとさせていただきますー!
@natsuto6 レビューありがとうございました! @komagata メンバーのレビューが通りましたので、レビューをお願いします。
UPDATE users SET hibernated_at = '2023-09-01 00:00:00' WHERE id = <ユーザID>;
UPDATE discord_profiles SET account_name = 'hoge#1234' WHERE user_id = <ユーザID>;
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
確認させていただきました。OKです~👌
かしこまりました~ |
@komagata こちら、ステージング環境での動作確認を試みているのですが、新規ユーザ登録ページの「参加する」ボタンを押した際に500エラーとなってしまいました。 |
@ogawa-tomo 本当に課金されてしまうのでステージング環境ではカードありのユーザー登録ができなくなっています。 |
@komagata なるほどです! よろしければ、こちらのユーザの休会日を六ヶ月以上前にし、Discordアカウント名を不正な値にするため、ステージング環境で以下のSQL実行をお願いできますでしょうか。 UPDATE users SET hibernated_at = '2023-09-01 00:00:00' WHERE id = 1060516511;
UPDATE discord_profiles SET account_name = 'hoge#1234' WHERE user_id = 1060516511; 以下、作業メモ 研修生ユーザとして登録するためには、以下にアクセス(tokenの値はこちら→https://bootcamp.fjord.jp/pages/357 ) 以下のユーザはカード番号が不正かつ休会後6ヵ月が過ぎているため、自動退会処理時にエラーが起こるので、あらかじめ管理ページから退会させておく |
URLのユーザーが存在しませんでした。 |
こちらを含めてseedを使って確認に必要なデータを用意してみてください~ |
ステージング動作確認 📝 以下のユーザはカード番号が不正かつ休会後6ヵ月が過ぎているため、自動退会処理時にエラーが起こるので、あらかじめ管理ページから操作して退会させておく nagai-kyuukaiユーザが休会後六ヶ月以上経過しており、分報チャンネル名が不正であり、分報リンクをクリックするとステージング環境Discordサーバ(fjordbootcamp-staging)の「jidoutaikai20240402」チャンネルに遷移することを確認する ブラウザで https://bootcamp-staging.fjord.jp//scheduler/daily/auto_retire?token={token} にアクセス ステージング環境Discordサーバ(fjordbootcamp-staging)の「jidoutaikai20240402」チャンネルが削除されていることを確認 |
@komagata @komagata |
@ogawa-tomo 本番環境で確認しました~。 |
Issue
概要
下記PRで休会から六ヶ月後に自動で退会される機能を実装しましたが、実際には休会から六ヶ月以上経ったユーザーも退会していませんでした。
#6490
原因を調査したところ、ユーザーのDiscordアカウント名が不正なときに退会処理に失敗するようになっていたことが分かりました。退会時に分報チャンネルを削除するとき、ユーザーに紐づくDiscordProfileモデルのtimes_idをnilに更新するのですが、このときにアカウント名が不正だとDiscordProfileモデルのバリデーションに引っかかっていました。
#6490 (comment)
そこで、退会時にDiscordProfileモデルを更新するときは、account_nameのバリデーションを無効にするように変更しました。
問題のバリデーションは下記の場所で定義されており、バリデーションコンテキストに
:retirement
を指定することで無効化することができます。bootcamp/app/models/discord_profile.rb
Lines 12 to 21 in f22f9f7
ちなみに、Discordアカウント名が不正なユーザーが存在する理由は、下記PRによりアカウント名のバリデーションルールが変更されたことでした。
https://github.com/fjordllc/bootcamp/pull/6855/files#diff-f7b1ee506d31db4da441d303c2f736fcc14e1069bb26bb6e6dc5d20b869df2e1
変更確認方法
Discordのアカウント名が不正かつ六ヶ月以上休会しているユーザーを作成し、六ヶ月以上休会しているユーザーを自動退会させるAPIが正常に動作していることを確認する。
bug/delete-times-channel-with-invalid-account-name-when-retire
をローカルに取り込むbin/rails db:seed
を実行してDBを初期化nagai-kyuukai-invalid-discord
とする)で参加登録する#
を用いたもの)に変更するkomagataでログインしなおし、管理ページの休会ユーザー一覧ページ(
/admin/users?target=hibernated
に遷移する。そこにさきほど作成したユーザーがいることを確認する。さらに、休会日が6ヵ月前かつDiscordアカウント名が不正なものになっていることを確認するまた、
kyuukai(Kyu Kai)
ユーザーがいれば、Railsコンソールを操作し、kyuukai(Kyu Kai)
ユーザーを削除しておくnagai-kyuukai(Nagai Kyu Kai)
ユーザーがいることも確認しておくTOKEN
の値を指定することに注意)nagai-kyuukai-invalid-discord
ユーザーとnagai-kyuukai(Nagai Kyu Kai)
ユーザーが休会ユーザー一覧に表示されておらず、退会ユーザー一覧に表示されることを確認するnagai-kyuukai-invalid-discord
ユーザーの分報チャンネルが消えていることを確認する