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