我有一个具有以下功能的应用程序:
- 使用
Devise
gem 的用户和身份验证。 act_as_follower
使用插件的追随者/追随者系统。- 用户可以创建的帖子。
- 每个帖子都可以被喜欢(我有一个供用户和帖子创建的连接表
likes
)。 - 每个帖子都可以有一个图像,使用
Paperclip
gem(我将来可能还会使用 Amazon S3) - 每个用户都可以拥有一个头像。
- 用户之间的消息系统。
- 各种操作的通知。
- 用户可以对帖子发表评论。
我希望用户可以选择删除他的帐户。设计已经有这个动作,但这还不够,因为它只会删除user
我认为的条目。
我要做的是,删除用户创建的所有帖子,删除帖子的图像。删除每个赞、评论、消息(发送/接收)、通知和关注者/关注者关系,最后删除用户帐户,包括头像图像。简而言之,该操作应删除具有user_id
与要删除的用户相关的字段的每个资源。
我还担心在单个请求中执行此操作会花费很多时间并且可能会发生错误,例如一半的帖子被删除或类似的事情。
解决所有这些情况的最佳方法是什么?
编辑:
我用过这个,效果很好。
class User < ActiveRecord::Base
has_many :posts, :dependent => :destroy
end
acts_as_follower
自动删除每个关注者/关注关系,并Paperclip
删除与资源相关的每个图像。