передача current_user модели через обратный вызов - PullRequest
2 голосов
/ 02 апреля 2012

У меня есть пара обратных вызовов, которые регистрируют активность при создании / обновлении:

class Projelement
  ..
  after_create   { |p| p.log_projelement_activity "created" }
  after_update   { |p| p.log_projelement_activity "edited"  }

Мне нужно дополнить дизайн, чтобы передать current_user (Devise) в log_projelement_activity для записи пользователя во время создания / обновления.

Я пытаюсь передать current_user из контроллера в модель и обратные вызовы через виртуальный атрибут. Но это не работает.

код:

class Projelement
  attr_accessor :modifying_user

  after_create   { |p| p.log_projelement_activity "created", modifying_user }
  after_update   { |p| p.log_projelement_activity "edited",  modifying_user }

  def log_projelement_activity(op_type, user)
    @a = Activity.new
    @a.user = user
  end
end


class MilestoneController
  ..
  def create
    @milestone = Milestone.new(params[:milestone])
    @milestone.modifying_user = current_user
  end
end

Каждое создание / обновление Activity имеет ожидаемые значения, за исключением того, что поле user имеет значение nil.

Что мне не хватает?

1 Ответ

1 голос
/ 02 апреля 2012

Вы можете использовать метка пользователя . Я думаю, что этот драгоценный камень делает именно то, что вам нужно;) Я использовал его с devise, и он ... просто отлично работает!

...