gpt4 book ai didi

ruby-on-rails - rails 3 : Best practices for saving models

转载 作者:行者123 更新时间:2023-12-03 23:48:14 28 4
gpt4 key购买 nike

什么时候应该将我的模型保存在 Rails 中?谁应该负责调用保存、模型本身或调用者?

假设我的用户模型中有(公共(public))方法,如 udpate_pointsupdate_level 等。有 2 个选项:

  1. 模型/方法负责调用保存。所以每个方法都会调用 self.save
  2. 调用者负责调用保存。因此,每个方法仅更新属性,但调用者在完成用户操作后调用 user.save

权衡是相当明显的:在选项#1 中,模型保证保存,但我们在每个事务中多次调用保存。在选项#2 中,我们每个事务只调用一次保存,但调用者必须确保调用保存。例如 team.leader.update_points 会要求我调用 team.leader.save 这有点不直观。如果我有多种方法对同一个模型对象进行操作,这会变得更加复杂。

根据要求添加更具体的信息:update level 查看用户有多少分并更新用户的级别。该函数还调用 facebook api 以通知它用户已达到新级别,因此我可能会将其作为后台作业有效地执行。

最佳答案

我最喜欢的实现方式是使用 attr_accessors 和模型 Hook 。这是一个例子:

class User < ActiveRecord::Base
attr_accessor :pts

after_validation :adjust_points, :on => :update

def adjust_points
if self.pts
self.points = self.pts / 3 #Put whatever code here that needs to be executed
end
end
end

然后在你的 Controller 中你做这样的事情:

def update
User.find(params[:id]).update_attributes!(:pts => params[:points])
end

关于ruby-on-rails - rails 3 : Best practices for saving models,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12336163/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com