什么时候应该将模型保存在 Rails 中?谁应该负责调用 save、模型本身或调用者?
假设我的用户模型中有(公共)方法,如udpate_points
,update_level
等。有2个选项:
- 模型/方法负责调用 save 。所以每个方法都会调用
self.save
. - 调用者负责调用 save。所以每个方法只更新属性,但调用者
user.save
在用户完成后调用。
权衡是相当明显的:在选项#1中,模型保证保存,但我们在每个事务中多次调用 save。在选项#2中,我们每个事务只调用一次 save,但调用者必须确保调用 save。例如team.leader.update_points
,需要我打电话team.leader.save
,这有点不直观。如果我有多个方法在同一个模型对象上运行,这可能会变得更加复杂。
根据请求添加更具体的信息:更新级别查看用户拥有多少点并更新用户的级别。该函数还调用 facebook api 来通知它用户已经达到了一个新的水平,所以我可能会有效地将它作为后台作业执行。