【发布时间】:2010-11-18 14:37:14
【问题描述】:
我使用 Postgresql 作为我的数据库,使用 rails 3 作为多租户应用程序的中间件。
我想为通过建立连接方法创建的每个连接设置一个环境变量,其中包含当前登录的客户端 ID。
无论如何我可以通过建立连接的任何回调来拦截初始化过程来设置这个环境变量吗?
【问题讨论】:
-
您能描述一下您真正想要实现的目标吗?如果一个应用程序连接到许多不同的数据库怎么办,你想在 env 变量中设置什么?还有为什么要设置环境变量???
-
对不起,我的邮箱不知怎么没有收到您的评论。是的,我认为设置环境变量是一种不好的做法。基本上,我正在为每个客户帐户构建一个 postgres 模式,以确保数据隐私。但是,这意味着我需要根据当前用户的 client_id 更改每个 ActiveRecord 连接的 schema_search_path。通常我不想在模型中使用会话信息,但在这种情况下,每次建立连接时我都需要使用此信息。有没有干净的方法来做到这一点?
标签: ruby-on-rails ruby postgresql activerecord