通过回调将current_user传递给模型

时间:2012-04-02 14:12:11

标签: ruby-on-rails callback virtual-attribute

我有几个回调记录创建/更新活动:

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

我需要扩充设计以将current_user(设计)传递给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 个答案:

答案 0 :(得分:1)

您可以使用userstamp。我认为这个宝石完全符合你的需要;)我用它来设计并且它......它的效果非常好!