次の機能を備えたアプリケーションがあります。
- gemを使用したユーザーと認証
Devise
。 act_as_follower
プラグインを使ったフォロワー・追従システム。- ユーザーが作成できる投稿。
- 各投稿にいいねを付けることができます (ユーザーと投稿を作成するための結合テーブルがあります
likes
)。 - 各投稿には、
Paperclip
gem を使用して画像を含めることができます (将来的には Amazon S3 も使用する予定です)。 - すべてのユーザーがアバターを持つことができます。
- ユーザー間のメッセージング システム。
- あらゆる種類のアクションの通知。
- ユーザーは投稿にコメントできます。
ユーザーが自分のアカウントを削除するオプションを持っていることを望みます。user
Deviseにはすでにこのアクションがありますが、エントリを削除するだけなので十分ではありません。
私がしなければならないことは、ユーザーが作成したすべての投稿を削除し、投稿の画像を削除することです。いいね、コメント、メッセージ(送受信)、通知、フォロワー・フォロー関係をすべて削除し、最後にアバター画像を含むユーザーアカウントを削除します。user_id
つまり、アクションは、削除するユーザーに関連するフィールドを持つすべてのリソースを削除する必要があります。
また、1 回のリクエストでこれを行うと非常に時間がかかり、投稿の半分が削除されるなど、何か問題が発生する可能性があるのではないかと心配しています。
この状況をすべて解決する最善の方法は何ですか?
編集:
私はこれを使用しましたが、うまくいきました。
class User < ActiveRecord::Base
has_many :posts, :dependent => :destroy
end
acts_as_follower
すべてのフォロワー/フォロー関係を自動的に削除Paperclip
し、リソースに関連するすべての画像も削除します。