У меня есть пара обратных вызовов, которые регистрируют активность при создании / обновлении:
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
.
Что мне не хватает?