LoginSignup
30
32

More than 5 years have passed since last update.

railsで複数のDBを使う方法

Last updated at Posted at 2014-03-05

rails(4.0.3)で複数のDBを使う際の設定メモ。
やり方としては、active_recordを使う際に毎回呼び出されているestablish_connectionをmodel側で設定してあげれば良い。

一応このような感じでできる。

hoge.rb
class Hoge < ActiveRecord::Base

  establish_connection(
                        adapter: "mysql2",
                        ...
                      )

  self.abstract_class = true
  self.table_name = "table名"
  self.primary_key = "プライマリーキー"
end

self.abstract_class = true を書いとけば継承ベース用のモデルだと認識してくれる。
(※上記の設定をしていれば、table_nameは不必要だという記事もあったが、自分の場合は設定しておかないとエラーになった。。。)

これだと、別DBを使う度にmodelに書かないといけないので、DRYじゃない。。。

なのでdatabase.ymlに設定した方が良さそう。

config/database.yml
hoge_db:
  adapter: mysql2
  encoding: utf8
  database: 'DB名'
  host: 'ホスト'
  username: 'ユーザ名'
  password: 'パスワード'
  socket: /tmp/mysql.sock
hoge.rb
class Hoge < ActiveRecord::Base

  establish_connection :hoge_db

  self.abstract_class = true
  self.table_name = "table名"
  self.primary_key = "プライマリーキー"
end

これの方がすっきりして良い。
ちなみに継承させればサブクラスでもDBの設定は引き継がれるみたい。

fuga.rb
calss Fuga < Hoge
end

コンソールで確認できたので、大丈夫そう!

30
32
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
30
32