【问题标题】:Connection switching to support multiple databases is not working in Rails 6.0.0.beta3 version支持多数据库的连接切换在 Rails 6.0.0.beta3 版本中不起作用
【发布时间】:2019-04-23 10:28:21
【问题描述】:

我已经阅读了关于 Rails 6.0.0.beta3 的 MultiDb 连接切换的文档并以这种方式实现:

database.yml

default: &default
adapter: mysql2
encoding: utf8mb4
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
username: root
password: root
socket: /var/run/mysqld/mysqld.sock

development:
  main:
    <<: *default
    database: r6_multidb_development

  main_replica:
    <<: *default
    database: r6_multidb_development_copy
    replica: true

文章模型

class Article < ApplicationRecord
  connect_to database: { writing: :main, reading: :main_replica }
end

数据库 r6_multidb_development 和 r6_multidb_development_copy 都有不同的记录,我期望在创建记录时记录应该插入到 r6_multidb_development 数据库中,在检索记录时应该从 r6_multidb_development_copy 数据库中。但是在这两种情况下,当插入和检索记录时,它都发生在 r6_multidb_development 数据库的主配置中。

我相信写入数据库应该从 r6_multidb_development 发生,读取应该从 r6_multidb_development_copy 发生。如果有人能解决这个问题,我将不胜感激。

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-6


    【解决方案1】:

    在您的环境配置中添加以下选项:

    config.active_record.database_selector = { delay: 2.seconds }
    config.active_record.database_resolver = ActiveRecord::Middleware::DatabaseSelector::Resolver
    config.active_record.database_resolver_context = ActiveRecord::Middleware::DatabaseSelector::Resolver::Session
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-12-14
      • 1970-01-01
      • 2017-01-21
      • 2015-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多