ruby-on-rails rails,activerecord,获取当前连接规范

pgx2nnw8  于 2023-06-07  发布在  Ruby
关注(0)|答案(3)|浏览(182)

我正在编写代码,将一些数据从一个数据库迁移到另一个数据库,覆盖目标中的一些数据。它使用ActiveRecord,因为它已经与使用AR的Rails应用程序相关联。
由于某些数据将被覆盖,我想提供一个确认提示,告诉用户用于目标数据库连接的实际连接字典/规范。你知道,适配器,主机,用户名,密码,数据库,你在database. yml中列出的东西。
我可以为我正在写入的东西获取模型,并请求SomeModel. connection....但是似乎根本没有API来从活动连接对象中获取实际的连接规范。
是吗?我错过什么了吗?还有其他的想法吗,甚至是没有文档的API?

n1bvdmb6

n1bvdmb61#

与在模型上调用connection的方式类似,可以在ActiveRecord::Base上调用connection

ActiveRecord::Base.connection_config

Look at the docs for ActiveRecord::Base,因为还有其他方法允许您获取/设置有关连接的属性。

更新

connection_config已被弃用,并将从Rails 6.2中删除。应该使用connection_db_config

ActiveRecord::Base.connection_db_config
s3fp2yjn

s3fp2yjn2#

答案是SomeModel.connection_config

mwkjh3gx

mwkjh3gx3#

对于Rails6及更高版本,当您为一个环境配置多个数据库时,例如

development:
  primary:
    <config for primary goes here>

  replica:
    <config for replica goes here>

然后,您可以像这样获得development环境的配置数组:

ActiveRecord::Base.configurations.configurations.select { |x| x.env_name == 'development' }

您将得到一个具有两个配置的阵列,一个是@name="primary",另一个是@name="replica"

相关问题