2

Rails 6.0.0.beta3 の MultiDb 接続切り替えに関するドキュメントを読み、次のように実装しました。

データベース.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 から行うべきだと思います。誰かがこの問題を理解してくれれば幸いです。

4

1 に答える 1