0

我对 Rails 很陌生,我正在尝试创建一个回调,该回调将在保存记录之前应用用户信息。

这是回调:

def add_resolution_name
  if self.res_desc_changed?
      self.res_provided_name = current_user.first_name
    elsif self.res_desc_changed? && self.res_approved?
      self.res_provided_name = current_user.first_name
      self.res_approved_name = current_user.first_name
    elsif self.res_approved_changed? && self.res_approved?
      self.res_approved_name = current_user.first_name
    elsif self.res_approved_changed? && !self.res_approved?
      self.res_approved_name = nil
  end
  save
  logger.info "pocessed resolution information... #{current_user.first_name}"
end

如您所见,它非常丑陋,我无法访问票证模型中的 current_user 。我应该把它放到演示者或服务中吗?任何提示表示赞赏。

4

1 回答 1

0

在 Rails 中,有一个类被调用ActiveRecord::Observer,它允许您将一些事件侦听器添加到您自己的模型before_save中,例如after_save. 看看这里http://api.rubyonrails.org/classes/ActiveRecord/Observer.html

例如

class UserObserver < ActiveRecord::Observer
  def before_save(comment)
    # your code for add resolution here
  end
end
于 2013-06-18T01:51:01.617 回答