我想使用 pg_audit_log 登录 Rails 应用程序。审核日志不仅必须显示已更改的列,还必须显示进行这些更改的用户。文档没有显示如何执行此操作,但在查看 pg_audit_log 源(postgresql_adapter.rb)后,我看到它从线程局部变量 ala 中读取用户信息:
current_user = Thread.current[:current_user]
我考虑过在过滤器之前和之后设置/取消设置,如下所示:
Thread.current[:current_user] = current_user
(使用控制器中的 current_user 辅助方法来获取当前登录的用户),但这似乎很危险。我现在花时间尝试了解 Rails 请求周期和线程如何交互,以便更好地了解危险程度。同时,我很好奇当前使用 pg_audit_log 的任何 SO 用户是否已经解决了每次用户对记录进行更改时将 user_id 和 user_unique_name 记录到日志表的需要。