文章实测了 Rails 8.1 中为 PostgreSQL 行级安全设置租户的四种方式。关键发现:ActiveRecord 将连接归还连接池时不会重置会话设置,导致无租户请求读到上一客户的数据(200/200 次);使用 with_connection 会泄漏,而 lease_connection 将连接租给请求线程,600 次并发下零泄漏;请求内新建线程会读到其他连接的残留租户;每请求事务在渲染 500 时仍会提交插入,需在 around_action 中检查响应状态并回滚;事务开销约 0.14 毫秒。
完成下面两步后,将自动完成登录并继续当前操作。