挑战:处理从数据库中删除用户/配置文件/帐户的最佳方法?

时间:2013-11-02 11:11:04

标签: ruby-on-rails devise devise-confirmable

挑战(停用):

使用Devise在Rails 4中使用社交媒体类型应用程序。 我正在寻找一种从系统中删除用户的好方法。由于Facebook允许用户重新激活帐户,我现在已经使用

实现了此功能
user.deactivated

布尔值,因此实际上不会从数据库中删除记录。

删除尚未确认的用户

使用rake任务我现在能够过滤所有尚未确认帐户7天的用户,我想真正从数据库中删除这些用户。由于用户在没有确认的情况下无法对我的申请做任何事情,我认为他们“丢失”了注册。

我想知道从数据库中删除这些用户的最佳策略是什么?

由于每个用户都有自己的个人资料/帐户,从系统中删除所有内容的最佳方法是什么?我正在使用:

belongs_to  :user, :dependent => :destroy

在个人资料/帐户模型中,因此从数据库中删除用户应该删除所有其他关系。这是最好的方式吗?任何需要考虑的因素都会破坏系统?

1 个答案:

答案 0 :(得分:1)

正如您已经开始这样,在模型之间放置依赖关系是一种很好的方法,这将删除destroy上链接的所有内容(不要与delete混淆它执行SQL查询而不使用Rails回调)。虽然我在最近的项目中开始避免使用这种技术。

我是一个关于数据库清洁度的老派,所以我们通常也使用gems来强制执行FK完整性。它在删除对象时添加了另一层维护(因为它会在触发时抛出SQL错误),但我发现它更可靠,然后是模型中的单行。此外,我们通常通过为所有依赖对象执行custom_destroy的{​​{1}}方法提供模型来克服这种增加的复杂性。

delete

这提供了速度的优势,因为在10个子对象上使用destroy_all将执行10个SQL查询(+所有回调),另一方面,此方法将只执行一个查询。

我们很少需要清理旧的不需要的数据(过期的项目),我们使用rake任务。如果您使用的是Heroku,只需使用Heroku调度程序,如果您使用的是VPS /专用机器,我建议使用whenever gem,它也应该与Capistrano有很好的集成。