我有一个具有以下功能的应用程序:
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
也会删除与该资源相关的所有图片。
答案 0 :(得分:2)
在所有严格依赖于该用户添加
的关系中:dependent => :destroy
例如
class User < ActiveRecord::Base
has_many :posts, :dependent => :destroy
end
当用途被销毁时,他的帖子也是如此。你也可以使用destroy回调,但这更复杂。