Rails において外部の(Railsでない)DBのデータをアプリの中に組み込む

結論

任意の名前のモデルを作成し、establish_connectionself.table_name を用いる。

具体例

例えば、外部のデータベースの接続情報が以下の通りであるとします。これは config/database.yml に書いておきます。

external_my_db:
  adapter: postgresql
  encoding: unicode
  pool: 5
  database: hogehoge_foobar
  host: 123.123.123.123
  port: 12345
  username: i_am_a_user
  password: this_is_a_password

上記のデータベースの例えば books というテーブルをモデルとして組み込むには、以下のように書きます。 このファイルを置く場所は app/models/book_by_external_db.rb です。

class BookByExternalDb< ApplicationRecord
  establish_connection :external_my_db

  self.table_name = :books
end

これで、Rails で BookByExternalDb というモデル名で外部DBの books テーブルを扱うことができます。アソシエーションなどは適宜追加しましょう。

Powered by はてなブログ