コガミツlog

福岡在住エンジニアのブログ

Railsガイドから学ぶマルチDBのコネクションを手動で切り替える方法

Railsガイドに載っている情報ではあるのですが、僕自身がマルチDBの経験少ないのでアウトプットとしてメモ残しておきます。

https://railsguides.jp/active_record_multiple_databases.html#コネクションを手動で切り替える

手動で切り替える方法

ActiveRecord::Base.connected_to(role: :reading) do
  # このブロック内のコードはすべてreadingロールで接続される
end

connected_to メソッドが提供されていて、DBのコネクションを切り替えられる。

role を指定するとコネクション先を指定できる。

確実に読み取り専用にするには prevent_writes: true を指定する。

ActiveRecord::Base.connected_to(role: :reading, prevent_writes: true) do
  # Railsは読み取りクエリであることをクエリごとに確認する
end

preventが防ぐ って意味なのでそのままですね。