0

我正在开发系统事件跟踪功能,用于记录登录、注销、未经授权的访问、错误密码、发布的内容等事件。我希望捕获请求数据,例如 remote_ip、会话 ID、请求类型等。

我了解理想情况下,您不应访问模型中的请求数据,而应将其传递给控制器​​,如下所示:

文章#编辑:

@article.update_attributes(params[:article])
Event.create(:eventable => @article, :request => request)

但是,通常会在 rake 任务甚至控制台中创建事件,因此我想将此代码从控制器中取出并放入模型中,如下所示:

class Article
  after_save :create_event

  def create_event
    Event.create(:message => "aritcle_updated")
  end
end

然后在 Event 类中:

class Event
   before_create :record_ip_address

   def record_ip_address
     # This is how I want it, I don't know how to access request here!
     self.ip = request.remote_ip # How to access request?
   end
end

实现这一目标的最佳方法是什么,以及如何访问模型中的 Request 对象?

请注意,事件模型不需要存在请求 - 我只希望它在可用时处理它

4

0 回答 0