pnoeric
(Eric)
1
こんにちは、私は Discourse(SSO を経由)を使用してフォーラムを運営しているメンバーシップサイトの運営者です。メインサイトでは、メンバー各自がアカウントやプロフィールを持っています。
現在、メンバーはメインのプロファイルを一時停止できますが、これは問題ありません。その際、Discourse のプロファイルも「一時停止」しており、以下のようなメッセージを表示しています:「このメンバーはプロファイルの一時停止を選択しました。」
質問:これが最適な対応方法でしょうか?メンバーが一時的に活動しないことを選んだ場合に、Discourse アカウントを「一時停止」する別の仕組みは存在するでしょうか?現在、Discourse には「一時停止」のメッセージが大きく赤いマークで表示されてしまいますが、これは本来あるべき姿ではありません。明らかに「一時停止」機能は懲罰として設計されたものですが、この状況はネガティブなものではないからです。
ご意見、一般的な考察、アイデア、あるいはかわいい子猫の GIF 画像など、何かあればぜひ聞かせてください。
「いいね!」 2
代わりに無効化するのはどうでしょうか?そうすれば、メールが届かなくなります。フォーラムを再度利用するには、メールの再認証が必要です。なお、猶予期間後にアカウントが削除されますが、これは投稿数がゼロの場合に限られます。
「いいね!」 4
pnoeric
(Eric)
3
その案に賛成です。ただ、「無効化」が具体的にどのようなものか調べる必要があります。私はあまり慣れていませんので、ヒントをありがとうございます!
(「無視」「ミュート」「一時停止」「無効化」の簡単な比較表があればいいのにと思います。これらはすべて「ユーザーXからの投稿を減らしたい」という意味合いですが、微妙な違いがあります…)
「いいね!」 2
pnoeric
(Eric)
4
その通りです。無効化:
(これはユーザーの管理ページからの抜粋で、管理者のみがアクセスできるものと思われます)。
「いいね!」 2
pnoeric
(Eric)
6
さて、ユーザーがアクティブかどうかを判断する方法がわかりません。API からユーザーオブジェクト(/users/ と /admin/users/ の両方)を取得できるので、ユーザーを無効化する前と後にそれぞれ取得して、2 つの JSON ダンプを比較しました。しかし、ユーザーの「アクティブ」ステータスを示すフィールドの違いは見当たりません!何か見落としているのでしょうか?!
Rails コンソールを使用してください。コードで変更を行う場合は、変更を保存することをお忘れなく。
pnoeric
(Eric)
8
返信ありがとうございます…
…ですが、その意味がよくわかりません。
現在、私は管理者アカウントでユーザーのプロファイルから直接「有効化/無効化」を行っており、ボタンをクリックするだけで済みます。その後、Insomnia(Postman と同様の API 探索ツール)を使って /admin/users/ の完全なレコードを取得しています。これにより、API が返す生の JSON ユーザーレコードを確認できます。
Rails コンソールを使うことで何が得られるのか、またどのように「変更を保存」するのか、よくわかりません。ユーザー管理画面で「このユーザーを無効化」ボタンをクリックすると、即座に反映されるのですが。
pnoeric
(Eric)
10
ああ、なるほど。はい、その通りです…でも、Rails コンソール(これでいろいろ試してみたりする?)を使うことが、どう役立つのかまだよくわからないですね。もう少し調べてみます…
try:
rails c
myUser = User.find_by(username_lower:"---ユーザー名---")
discourse ディレクトリから実行してください。
exit で…ええと…終了します 
ただし、本番環境の場合は注意してください。
より安全に試すこともできます 
rails c --sandbox
「いいね!」 1