システムからユーザーデータを完全に削除

ユーザーの情報をデータベースから完全に削除する必要がある状況が発生する可能性があります。詳細については触れませんが、GDPR(一般データ保護規則)により、システムにユーザー情報が一切保持されていないことを証明する必要がある場合もあります。

特定できたと思われる点はいくつかあります。

  • 現在のアノニマイゼーションプロセスは、ユーザープロフィールには問題ありません。
  • すべての返信を「ユーザーリクエストにより削除済み」という簡単なテキストに編集することも、編集履歴が削除されることを条件に受け入れ可能です。

したがって、本当に必要だと考えているのは、ユーザーのすべてのメッセージを「ユーザーリクエストにより削除済み」に置き換え、そのメッセージの編集履歴をすべて消去するクエリ(またはRuby関数?)です。

これに協力してくれる、データベースやDiscourseのコード経験が豊富な方はいらっしゃいますか?

削除していただけますか?

u=User.find_by_username('byebye')
posts=Post.where(user_id: u.id)

そして、すべての投稿に対してPostDestroyerを呼び出します。(正確なやり方はすぐに思い出せません。)

もし本当に投稿を「deleted by…」に置き換えるのであれば、次のようなことを行うでしょう。

posts.update_all(raw: "deleted by user request")

そして、PostRevisionモデルからデータを削除する必要があるかもしれません。

posts.each do |p|
  bad=PostRevision.where(post_id: p.id)
  bad.destroy_all
end

テストとして手動でいくつか実行するか、非常に注意してステージングサイトで実行することをお勧めします。

「いいね!」 2

わかりません、だから聞きました :slight_smile:

数日中にステージ環境で試してみます。ジェイさん、いつもありがとう! :heart:

トピックが、誰かが去っただけで破壊されるのは避けたいので、編集したいです。他の人がトピックに興味深い議論を寄せてくれたかもしれないからです。

懸念事項は、ユーザーが何万もの返信を持っている場合です。

「いいね!」 2

ユーザーがすべてのデータの削除をリクエストした場合、それは必ずしもすべての投稿/返信を含まない可能性があります。GDPR(一般データ保護規則)では、投稿に高度に個人的な情報が含まれていない場合、匿名化で十分であることはおそらくご存知でしょう。

この件については多くのトピックがありましたが、法律は国によって異なります。

「いいね!」 2

実際、最初のユーザーが匿名化されたら、将来の匿名化されたユーザーは最初のユーザーにマージするだけでよい。

それは実質的に、Discordのような他のプラットフォームと同様に、すべての匿名アカウントが単に「削除されたユーザー」として表示されることになります。

常にそうすることをお勧めしませんが、投稿者の身元を保護できる選択肢の1つです。ランダムな番号は1人の著者だけのものではなくなるからです。その欠点は、投稿が同じ著者または異なる著者からのものかどうかわからない場合、トピックの会話を追跡するのがより困難になる可能性があることです。

それは非常にしばしば不可能であり、特に多くの返信を持つユーザーでは不可能です。

ユーザーが数千のメッセージを持つユーザーを、たとえ新しいユーザーが1つだけの場合でもマージしようとすると、マージユーザー機能が非常に頻繁に失敗することに気づきました(ユースケース:古いユーザーが戻ってきて資格情報を持っておらず、私と確認し、すべて問題なく、新しいユーザーを数件の返信とともに元の古いユーザーとマージしようとする)。

バグレポートを提出する必要があるようですね

「いいね!」 1