我正在编写代码,将一些数据从一个数据库迁移到另一个数据库,覆盖目标中的一些数据。它使用ActiveRecord,因为它已经与使用AR的Rails应用程序相关联。
由于某些数据会被覆盖,我想提供一个确认提示,告诉用户用于目标数据库连接的实际连接字典/规范。你知道,适配器,主机,用户名,密码,数据库,你在database.yml中列出的东西。
我可以将模型用于我正在编写的内容并要求SomeModel.connection ....但似乎根本没有API可以从实时连接对象中获取实际的连接规范。
真的?我错过了什么吗?还有其他任何想法,甚至是无证件的api?
答案 0 :(得分:66)
与您在模型上调用connection
的方式类似,您可以在ActiveRecord :: Base上调用connection
。
ActiveRecord::Base.connection_config
Look at the docs for ActiveRecord::Base,因为还有其他方法可以让您获取/设置有关连接的属性。
答案 1 :(得分:9)
答案是SomeModel.connection_config
答案 2 :(得分:0)
Rails通过将逻辑委派给不同的受支持适配器来根据要使用的DBMS在内部实例化新连接。该信息在构造函数中设置的@connection_adapters
实例变量中:
ActiveRecord::Base.connection.instance_variable_get(:@connection_parameters)
区别是ActiveRecord::Base.connection_config
返回一个包含已为Rails目的“映射”的数据的哈希,您可以通过执行此操作轻松实例化新连接
PG.connect(ActiveRecord::Base.connection.instance_variable_get(:@connection_parameters))