2

postgresql db を使用して、sqlite3 db からいくつかのレガシー データを Rails アプリにインポートする必要がありました。そこで、従来の sqlite3 db のすべての列タイプでモデル「businesses」を作成しました。database.yml ファイルなどを変更しました...... モデル business.rb に次の行を追加しました。

class Business < ActiveRecord::Base

establish_connection "citylistings_development"
end

これにより、sqlite3 データベースに接続できるようになり、ブラウザーでコンテンツを表示できる index.html.erb ファイルを作成しました。

コントローラーでは、私のコードは次のとおりです。

class BusinessesController < ApplicationController
def get_all
  @businesses = Business.all
end

def create_db_entries
 self.get_all
end

def index
respond_to do |format|
  format.html #index.html.erb

end
end
end

ここで、モデル「business.rb」を作成したときに、postgresql db にテーブルが作成されていることに気付きました。

ただし、そのデータベースに接続しているため、明らかに私のsqlite3データベースからデータを読み取っています。

私の質問はこれです、

index.html.erb ファイルに出力されたデータを pg db に書き込むにはどうすればよいですか? これは可能ですか?

Model インスタンスは一度に 2 つのデータベースに接続し、1 つのデータベースから読み取り、別のデータベースに書き込むことができますか?

これを解決する 1 つの方法は、「ビジネス」モデルが sqlite3 データベースから読み取りを行っている間に、pg データベースにエントリを書き込む別のモデル「tempbiz」を作成することです。「ビジネス」モデルが両方のタスクを実行できるかどうか知りたいことは何ですか?

ありがとう


編集 以下のコメントによると、これが私のdatabase.ymlです(コメントアウトされたものはすべて除外しました)

#===============================================================================
development:
 adapter: postgresql
 encoding: unicode
 database: XXX_development
 pool: 5
 username: XXX
 password: XXXX
#===============================================================================
citylistings_development:
 adapter: sqlite3
 database: db/citylistings.sqlite3
 pool: 5
 timeout: 5000
4

2 に答える 2

1

このトピックに関するプレゼンテーションを見ましたが、secondbase gem をチェックアウトする必要があります。そのドキュメントを引用すると、「SecondBase は、アプリケーションに 2 番目のデータベースを追加します。Rails を使用すると、必要な数の外部データベースへの接続を確立できますが、Rails は、移行およびテスト タスクで 1 つのデータベースしか管理できません。」

https://github.com/karledurante/secondbase

あなたがそれを必要とする正確な理由のために作成されました。彼らには、インポートする必要のあるレガシー データベースがありました。

乾杯、ショーン

于 2012-05-03T15:07:49.213 に答える