我正在使用ActiveRecord来维护有关用户的信息。 User类具有预期的load(),insert(),update()和delete()方法,setter,getter和其他一些。但我无法确定某些其他方法是否应包含在User类中,或由协作者处理。

以下是一个例子:

用户可能要求确认的事务有多个。这是以传统方式处理的 - 通过链接向用户发送电子邮件;单击该链接确认用户确实希望事务继续进行。验证密钥的散列及其到期日期/时间将作为用户记录的一部分保留。

在这个过程中我应该在哪里画线?是否应该有一个处理验证的协作者(例如,从查询字符串中获取纯文本验证密钥并接受用户对象作为参数)?或者应该由User类在内部处理(在方法调用中传递纯文本验证密钥)?

当然,在验证时会发生的下一件事是,交易将继续进行,需要更新活动记录 - 在我看来,用户类必须负责。

有什么建议吗?

有帮助吗?

解决方案

您应该将此任务委派给协作者,协作者管理确认表。

您可以使用 Confirmation 模型跟踪所有确认要求。该模型将属于 User ,以及管理确认哈希和待确认的动作(例如 activate_account change_password change_email 等。)。

Confirmation 控制器将负责验证确认哈希并在适当的模型上链接相应的操作(例如 activate_account - > user.activate( ) change_password - > user.setPassword()等)并从确认中删除 Confirmation 表成功完成。

这样可以更好地分离逻辑,并允许您更好地扩展,例如为给定用户提供多个待处理确认(例如确认更改密码确认更改其他内容。)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top