我希望能够在Rails 4应用程序中的不同数据库模式之间切换。
计划是在堆栈的最开头添加一个新的中间件来为我做这件事。
唯一的方法是设置ActiveRecord::Base.connection.schema_search_path = '"$user",my_schema'
。
我遇到的问题是此连接将转到池中,并且以下所有请求都将使用第一个中设置的架构(基本上将其泄漏)。
所以我看到的解决方案是始终将搜索路径重置为之前的状态,并始终在每个请求上设置它。
但我不想这样做是因为:
public
)架构,执行set search_path to '$user$,my_schema'
将是可以避免的其他查询所有这些特别适用于线程服务器,如Puma。
对于我的中间件解决方案,还有更好的替代方案吗?
感谢。
答案 0 :(得分:2)
当您返回到池的连接时,必须确保池运行DISCARD ALL;
以重置连接状态。
这将清除所有SET ROLE
,SET SESSION AUTHORIZATION
,会话变量,search_path
设置等。