【发布时间】:2012-09-09 02:53:29
【问题描述】:
我应该什么时候将我的模型保存在 Rails 中?谁应该负责调用 save、模型本身或调用者?
假设我的用户模型中有udpate_points、update_level 等(公共)方法。有两种选择:
- 模型/方法负责调用 save 。所以每个方法都会调用
self.save。 - 调用者负责调用save。所以每个方法只更新属性,但调用者在用户完成后调用
user.save。
权衡是相当明显的:
在选项 #1 中,模型保证会保存,但我们在每个事务中调用 save 多次。
在选项 #2 中,我们每个事务只调用一次 save,但调用者必须确保调用 save。例如team.leader.update_points 需要我打电话给team.leader.save,这有点不直观。如果我有多个方法在同一个模型对象上运行,这可能会变得更加复杂。
根据要求添加更具体的信息: 更新级别查看用户有多少积分并更新用户的级别。该函数还调用 facebook api 来通知它用户已经达到了一个新的水平,所以我可能会有效地将它作为后台作业执行。
【问题讨论】:
-
最佳实现完全取决于“update_points”和“update_level”方法的作用。它们传递了哪些参数以及它们如何处理这些参数?
标签: ruby-on-rails ruby-on-rails-3 rails-activerecord