ruby - 没有 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。我可以正确地irb
做Model.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
解决方案
推荐阅读
- php - 在 mPDF 中调整 css 大小
- java - 如何将对象作为参数传递给函数,然后让函数将子类型的新对象分配给它的参数?
- forms - Microsoft Forms 中预填充的员工评估
- java - 无法消费消息Kafka Spring Boot Docker Compose
- loops - Binance api“行包含空字节”实时数据错误
- python-3.x - 为什么 Python3 比 Python 慢?
- flutter - 在 Flutter web 中处理溢出
- c# - WPF 表单崩溃
- ruby - Ruby——使用现有数组中的自定义键和值创建哈希
- kubernetes - Kubeflow 管道无法创建容器