Rails アプリのログインに pg_audit_log を使用したいと考えています。監査ログには、変更された列だけでなく、それらの変更を行ったユーザーも表示される必要があります。ドキュメントにはこれを行う方法は示されていませんが、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 をログ テーブルに記録する必要性を解決したかどうかに興味がありました。