我正在打开Rails控制台会话并执行:
2.6.3 :048 > ActiveRecord::Base.connected?
=> true
2.6.3 :049 > ActiveRecord::Base.connection_pool.disconnect!
=> []
2.6.3 :050 > ActiveRecord::Base.connected?
=> false
2.6.3 :051 > ActiveRecord::Base.establish_connection(:development)
=> #<ActiveRecord::ConnectionAdapters::ConnectionPool:0x00 ... >
2.6.3 :052 > ActiveRecord::Base.connected?
=> false
2.6.3 :053 > SomeModel.connection
=> #<ActiveRecord::ConnectionAdapters::PostgreSQLAdapter:0x00 ...>
2.6.3 :055 > ActiveRecord::Base.connected?
=> true
$ rails -v
Rails 5.2.3
我的config/database.yml
文件必须很好,因为HTTP请求可以正常工作。
为什么我不能以这种方式在Rails控制台中建立连接?
我之所以问是因为我在establish_connection
文件之一中有类似的config/initializers/
用法,即正在配置https://stackoverflow.com/a/57737436/11849137个工作人员sneakers,并且还返回了{{ 1}}在false
答案 0 :(得分:1)
要重新连接,您可以使用
ActiveRecord::Base.connect
AR仅对ActiveRecord :: Base调用一次build_connection。所有子类都使用一个连接。
您可以自己在某些子类上手动调用建立连接。一次使用两个数据库非常方便,例如
class MyMainUser < ActiveRecord::Base; end
class MyOtherDb < ActiveRecord::Base; end
class MyOtherUser < MyOtherDb; end
MyOtherDb.establish_connection ...
MyMainUser.first # uses default db
MyOtherUser.first # uses other db
You can't do queries that would cross databases though.
答案 1 :(得分:1)
要进行连接,可以使用ActiveRecord :: Base.connection,然后可以调用Somemodel.first,它应该可以工作。