我正在使用ActiveRecord来维护有关用户的信息。 User类具有预期的load(),insert(),update()和delete()方法,setter,getter和其他一些。但我无法确定某些其他方法是否应包含在User类中,或由协作者处理。
以下是一个例子:
用户可能要求确认的事务有多个。这是以传统方式处理的 - 通过链接向用户发送电子邮件;单击该链接确认用户确实希望事务继续进行。验证密钥的散列及其到期日期/时间将作为用户记录的一部分保留。
在这个过程中我应该在哪里画线?是否应该有一个处理验证的协作者(例如,从查询字符串中获取纯文本验证密钥并接受用户对象作为参数)?或者应该由User类在内部处理(在方法调用中传递纯文本验证密钥)?
当然,在验证时会发生的下一件事是,交易将继续进行,需要更新活动记录 - 在我看来,用户类必须负责。
有什么建议吗?
答案 0 :(得分:0)
您应该将此任务委派给协作者,该协作者管理confirmations
表。
您可以使用Confirmation
模型跟踪所有确认要求。该模型将属于User
,并管理确认哈希和待确认的操作(例如activate_account
,change_password
或change_email
等。
Confirmation
控制器将负责验证确认哈希并在适当的模型上链接相应的操作(例如activate_account
- > user.activate()
,change_password
- &gt ; user.setPassword()
等)并在成功完成后从Confirmation
表中删除confirmations
。
这样可以更好地分离逻辑,并允许您更好地扩展,例如为给定用户提供多个待处理确认(例如确认更改密码和确认更改其他内容。)