gpt4 book ai didi

ruby-on-rails - 在 pg_audit_log 中设置 current_user

转载 作者:行者123 更新时间:2023-12-04 05:31:57 25 4
gpt4 key购买 nike

我想使用 pg_audit_log 登录 Rails 应用程序。审核日志不仅要显示已更改的列,还必须显示进行这些更改的用户。文档没有显示如何执行此操作,但在查看 pg_audit_log 源代码 (postgresql_adapter.rb) 后,我看到它从线程局部变量 ala 中读取用户信息:

current_user = Thread.current[:current_user]

我考虑过像这样在过滤器之前和之后设置/取消设置它:

Thread.current[:current_user] = current_user

(在 Controller 中使用 current_user 辅助方法来获取当前登录的用户),但这看起来很危险。我现在正花时间尝试了解 Rails 请求周期和线程如何交互,以便更好地了解危险程度。同时,我很好奇当前使用 pg_audit_log 的任何 SO 用户是否已经解决了每次用户对记录进行更改时将 user_id 和 user_unique_name 记录到日志表的需要。

最佳答案

按照您描述的方式设置当前用户是一种常见的方法。参见,例如,http://rails-bestpractices.com/posts/47-fetch-current-user-in-models

一些示例代码可能如下所示:

# in your model
class User < ActiveRecord::Base
def self.current
Thread.current[:current_user]
end
def self.current=(user)
Thread.current[:current_user] = user if user.nil? || user.is_a?(User)
end
end

# in your controller
class ApplicationController < ActionController::Base
before_filter :set_current_user
def set_current_user
User.current = user_signed_in? ? current_user : nil
end
end

关于ruby-on-rails - 在 pg_audit_log 中设置 current_user,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14163571/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com