-
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
退会時に分報チャンネルを自動で削除する #6626
退会時に分報チャンネルを自動で削除する #6626
Conversation
31dff7e
to
0ccc7be
Compare
@@ -2,8 +2,6 @@ | |||
|
|||
class UnfinishedDataDestroyer | |||
def call(user) | |||
return unless user.saved_change_to_retired_on? |
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.
今回、チャンネル削除処理をNewspaper経由で呼ぶことにしましたが、その際に一緒に呼ばれるのがこのクラスです。ユーザーの未確認提出物の削除・WIP日報の削除・就職活動フラグOFFの操作をしています。
この箇所では「ユーザーの退会フラグに変更があったか」を判断しそのときのみ処理を実行するようになっていますが、その判断は呼び出し側で行うべき(このクラスの責務ではない)と考え、処理を移しています。
この処理を呼んでいるのは以下の3箇所であり、いずれも退会処理を行うときに呼んでいます。(ユーザーが自ら退会するとき、管理画面から退会させるとき、休会六ヶ月で自動退会するとき)
Newspaper.publish(:retirement_create, user) |
Newspaper.publish(:retirement_create, @user) if @user.saved_change_to_retired_on? |
Newspaper.publish(:retirement_create, user) |
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.
ご説明ありがとうございます〜
そうですね、確かにUnfinishedDataDestroyerではなく呼び出し側でフラグOFFの操作を行った方が良いと思います。
d7932e3
to
d1760f1
Compare
d1760f1
to
a5c7566
Compare
386d0ae
to
a38be14
Compare
f8f8c54
to
c084005
Compare
c9058d9
to
b4a06b3
Compare
a5c7566
to
6659fdd
Compare
1724804
to
3a31a33
Compare
2353c10
to
756d208
Compare
756d208
to
1bcded6
Compare
@fuwa-syugyo こちら、よろしければレビューお願いできますでしょうか? |
@ogawa-tomo |
@ogawa-tomo |
@fuwa-syugyo 私の環境でももう一度試してみましたが無いですね…。ちょっと画面が変わったのかも…。「Build-A-Bot」と書いてあるので、おそらく正しい画面に遷移していそうな気がします。いったん無視してそのまま3以降の手順に進んでいただけますでしょうか? |
@ogawa-tomo 一連の動作確認が終わりましたので、コードの方を見ていこうかと思います。 |
@ogawa-tomo |
@fuwa-syugyo ご連絡ありがとうございます。とくに急ぎではありませんので、ほかに問題なければ引き続きレビューお願いできますでしょうか?(来週末くらいまでにコメント返ってくるといいかな、くらいのイメージです) |
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
遅くなり申し訳ございません。
確認させていただきました。
内容について問題ないと思いますが、念の為1点だけ確認させてください。
退会の動線は3パターンのみ、というのはどこかで確認できますでしょうか?
(気になっただけなのですが、たとえばお金の引き落としができなくなったケースでは管理者が手動で退会させるのでしょうか?3パターン以外思いつかないですが念の為、という感じです)
他に動線がなく3パターンのみということでしたらApproveさせていただきます〜
お手数ですがよろしくお願いいたします。
@@ -2,8 +2,6 @@ | |||
|
|||
class UnfinishedDataDestroyer | |||
def call(user) | |||
return unless user.saved_change_to_retired_on? |
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.
ご説明ありがとうございます〜
そうですね、確かにUnfinishedDataDestroyerではなく呼び出し側でフラグOFFの操作を行った方が良いと思います。
退会にまつわるIssueをたくさん担当したので自然とそういうものだと思いこんでいたのですが、コード上で確認するとすれば、Newspaperの
気になったのでざっと調べてみましたが、お金の引き落としができなくなったことを検知して何らかの処理を行うコードは見つかりませんでした。一応、カードが無効になったときは管理ページのユーザー一覧で表示されるみたいです。 bootcamp/app/views/admin/users/_table.html.slim Lines 98 to 105 in 1bcded6
ログイン時にカードの情報を見るメソッドも用意されているようですが、現在はどこからも呼ばれていないようです。 bootcamp/app/controllers/concerns/authentication.rb Lines 44 to 46 in 1bcded6
いずれにせよ、支払いができなくなったからといって即退会ということはないとは思います。引き落としができなくなった場合は、おそらくですが手動で対応しているのではないかと思います。 |
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
ご確認いただきありがとうございます!
退会の動線が3つ、ということで承知いたしました。
Approveさせていただきます〜
@fuwa-syugyo レビューありがとうございました! @komagata メンバーのレビューが通りましたので、レビューをお願いします:bow: |
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です〜🙆♂️
Issue
概要
退会時に分報チャンネルを自動で削除します。
変更確認方法
ブランチを
feature/delete-times-chennel-when-retire
に切り替えておく。下記の通り、準備としてテスト用Discordサーバーの作成、Discord Botの作成、環境変数の設定とサーバーの起動を行い、以下の3パターンの退会動線で動作確認をする。
準備
テスト用Discordサーバーの作成
Discordのホーム画面左下の「ユーザー設定」から「詳細設定」へ遷移し、「 開発者モード」をONにしておく
Discordのホーム画面で「+」ボタンをクリックしてテスト用のDiscordサーバーを追加する
作成したサーバーのアイコンを右クリックし、コンテキストメニュー「サーバーIDをコピー」をクリックして控える
Discord サーバー名の右側にあるボタン「∨」をクリックし、作成メニューから「カテゴリーを作成」を選択し、適当な名前(「分報」など)でカテゴリーを作成する
カテゴリーを右クリックし、「チャンネルIDをコピー」をクリックしてカテゴリーIDを控える(画面表示は「カテゴリーIDをコピー」の誤りだと思われる)
Discord Botの作成
https://discord.com/developers/applications にアクセスして右上のボタン「New Application」からアプリケーションを登録し、ボットを使えるように設定する。
Authorization Flow > PUBLIC BOT
のトグルボタンを OFF にするPrivileged Gateway Intents > SERVER MEMBERS INTENT
のトグルボタンを ON にするボタン「認証」をクリックして画面の指示に従えばOK
環境変数の設定とサーバーの起動
前述の手順で発行された各キーを環境変数として設定する
DISCORD_GUILD_ID
DISCORD_TIMES_CHANNEL_CATEGORY_ID
DISCORD_BOT_TOKEN
開発環境での例として、次のコマンドをターミナルで実行する
そのまま
bin/rails s
でサーバーを立ち上げるユーザーが自ら退会するときの動作確認
休会6ヵ月後に自動退会するときの動作確認
http://localhost:3000/scheduler/daily/auto_retire
にアクセス(画面は表示されないが、処理が走る)管理ページから退会させるときの動作確認
次にやりたいこと
退会の導線は複数あるため、下記のイシューで処理を共通化したい
関連PR