首页 > 解决方案 > 没有 Rails 的 ActiveRecord 6(多数据库)

问题描述

我知道 Rails 6.x 现在支持多个数据库连接。但是,我继承了一个没有 Rails 编写的代码库,但我想利用 ActiveRecord 6 中提供的新功能。通过 AR gem,我能够手动加载连接(将环境设置为“default_env”)并connects_to运行在我的模型上正确。

我被卡住的地方是处理连接切换。我将假设我将无法使用自动切换(https://edgeguides.rubyonrails.org/active_record_multiple_databases.html#activating-automatic-connection-switching),因为没有 Rack 或 Rails。我可以正确地irbModel.connected_to,但我不确定我是否能够在find不手动定义这些方法的情况下在方法上使用它。

ActiveRecord::Middleware::DatabaseSelector有没有办法在没有或其他方式利用该类的情况下设置自动切换?

更新

数据库.yml

connection: &conn
  username: ***
  password: ***
  adapter: mysql2
  host: ***
  pool: 5

default_env:
  db1:
    <<: *conn
    database: db1
  db2:
    <<: *conn
    database: db2

class A < ActiveRecord::Base
#uses db1 connection
end

class B < ActiveRecord::Base
connects_to database: { writing: :db2, reading: :db2 }
end

标签: rubyactiverecord

解决方案


推荐阅读