2012-08-13 55 views
0

我正在使用Rails应用程序,用户必须填写两个或更多屏幕才能注册。注册数据分布在两个表中的两个或三个记录中。清理部分注册

当然,用户可以在注册完成之前进行纾困。这在强制性列中可检测为空项。

什么是“Rails方式”在合理的延迟(几个小时)后清理这些部分完整的注册?

如果它有所作为,我在Heroku上部署。

回答

2

我不知道它是否是“rails方式”,但我认为创建rake任务并通过cron job定期运行它可能足以满足您的描述。如果你正在进行测试,你甚至可以像其他代码一样test the rake tasks

+0

谢谢。我现在看到Heroku有一个rake任务调度程序,非常适合这个。 – Gene 2012-08-13 23:45:14

2

您是否考虑过为“正在进行”的用户提供单独的表格?然后将它切碎并在完成时涂抹。

然后,您可以简单地通过删除正在进行中的表格中有超过一天的update_at的任何内容来清理废弃的用户;运行rake任务的每日cron作业(或调度程序或...)可以处理此问题。这也阻止了他们在完成之前登录,因为他们实际上并不是用户,直到他们完成。

作为一个副作用,他们将无法登录,直到他们完成,因为他们不是真正的用户,直到他们完成。当然,您可能需要调整您在一个控制器内部的处理current_user

这种方法也意味着您可以将NOT NULL约束添加到您的强制列作为额外的偏执狂等级。

+0

谢谢。我的注册很复杂,分布在三张桌子上。因此,对于我来说,做一个包含'delete'查询的rake任务更有意义,该查询可以识别不完整的reg与一天内的“最后一次触摸”时间。在不同的环境中,你可能是正确的答案。 – Gene 2012-08-13 23:47:58