1

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

这是一个例子:

用户可能会请求一些需要确认的交易。这是以传统方式处理的——向用户发送带有链接的电子邮件;点击链接确认用户确实希望交易继续进行。验证密钥的哈希值及其到期日期/时间作为用户记录的一部分保留。

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

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

有什么建议么?

4

1 回答 1

0

您应该将此任务委托给管理confirmations表的协作者。

您将使用该Confirmation模型来跟踪所有确认要求。该模型将属于User,并管理确认哈希和要确认的动作(例如activate_accountchange_passwordchange_email等)。

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

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

于 2009-03-06T18:53:50.200 回答