0

私はレールにかなり慣れていないので、レコードが保存される前にユーザー情報を適用するコールバックを作成しようとしています。

コールバックは次のとおりです。

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ます。ここを見てください http://api.rubyonrails.org/classes/ActiveRecord/Observer.htmlbefore_saveafter_save

例えば

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