我对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。我应该把它放到演示者或服务中吗?任何提示赞赏。
答案 0 :(得分: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