Ruby on rails 如何以编程方式获取Mongoid正在写入的当前数据库?

Ruby on rails 如何以编程方式获取Mongoid正在写入的当前数据库?,ruby-on-rails,mongodb,mongoid,mongodb-ruby,mongoid3,Ruby On Rails,Mongodb,Mongoid,Mongodb Ruby,Mongoid3,我正在使用Mongoid与多个数据库交谈。使用Mongoid和rails覆盖_数据库(“数据库_名称”)。如何以编程方式查找当前数据库 会话上的Mongoid文档:定义覆盖数据库的方法,但不定义获取当前正在使用的数据库的方法。明白了 Mongoid.default_session.options[:database] 如果您想要覆盖的数据库,实际上需要使用 Mongoid::Threaded.database_override 新的方法是 Mongoid::Config.clients["d

我正在使用Mongoid与多个数据库交谈。使用Mongoid和rails覆盖_数据库(“数据库_名称”)。如何以编程方式查找当前数据库

会话上的Mongoid文档:定义覆盖数据库的方法,但不定义获取当前正在使用的数据库的方法。

明白了

Mongoid.default_session.options[:database]

如果您想要覆盖的数据库,实际上需要使用

Mongoid::Threaded.database_override

新的方法是

Mongoid::Config.clients["default"]["database"]
你也可以看看

Mongoid::Config.clients

查看其他可用内容。

运行Mongoid.default\u session.options[:database]时会出现默认\u session无效的错误。它现在是默认的_客户端。这真是太棒了

在不使用[:database]的情况下运行它,以获取所有选项并查看数据库的完整配置

Mongoid::Config.clients[“default”][“database”]假设您使用的是而不是Mongoid.yml的uri版本。在任何情况下你都会得到零分。使用Mongoid::Config.clients[“default”]获取当前数据库的完整配置,或使用Mongoid::Config.clients[“default”]['uri']获取完整的uri

从最后一个端口号/后的URI中选择数据库名称。使用分片配置的Mongoid版本7.0.5可能有几个

Mongoid.client(:default).database

现在是通过符号:
Mongoid.default\u session.options[:database]
更正了它。谢谢。警告,这不是线程安全的!!-如果要在应用程序控制器中的before_筛选器中切换数据库,这将返回应用程序中其他线程中使用的数据库名称。这似乎已被弃用。它现在是
Mongoid.default_client.options[:database]
您也可以使用符号<代码>Mongoid::Config.clients[:默认][:数据库]