Railsアプリケーションで2種類のデータベースを使用することは可能ですか?
私は 2 つのデータベースを使用しています。Postgresはあまり変化しないデータを保存し、MongoDB は動的に変化するデータを保存します。
これは有効なアプローチですか?これら 2 つのデータベース間を接続して、単一の Rails アプリケーションで操作することは可能ですか?
私が間違っている場合は、修正してください。
よろしく、バラン
Railsアプリケーションで2種類のデータベースを使用することは可能ですか?
私は 2 つのデータベースを使用しています。Postgresはあまり変化しないデータを保存し、MongoDB は動的に変化するデータを保存します。
これは有効なアプローチですか?これら 2 つのデータベース間を接続して、単一の Rails アプリケーションで操作することは可能ですか?
私が間違っている場合は、修正してください。
よろしく、バラン
はい、これは可能です。これは私の古いコードの例です(ただし、ここでは両方のDBにmysqlを使用していますが、アイデアを得ることができると思います)
database.ymlファイルで2つのデータベースを定義します
development: &defaults
adapter: mysql
encoding: utf8
database: DB1
enable_call: true
username:
password:
host:
portal_development: &defaults
adapter: mysql
encoding: utf8
database: DB2
enable_call: true
username:
password:
host:
モデルでは、上記のデータベースと組み合わせたモデルをベースにする必要があります
portal_base.rb
class PortalBase < ActiveRecord::Base
self.abstract_class = true
establish_connection "portal_#{Rails.env}"
def self.table_name_prefix
"DB1."
end
end
default_base.rb
class DefaultBase < ActiveRecord::Base
self.abstract_class = true
establish_connection "#{Rails.env}"
def self.table_name_prefix
"DB2."
end
end
それに応じてモデルを導き出します
class Client < PortalBase
#code
end
あなたが今アイデアを持っていることを願っています:)
見つかった解決策:
mongoid
これを実現するために gem を使用できます。
インストール手順
1) Gemfile を追加してコマンド"gem mongoid"
を実行し、mongoid をインストールします。bundle
2) と入力して mongoid 構成を生成します。これにより、ファイルの近くに構成ファイル"rails g mongoid:config"
が作成されます。このファイルで構成を Mongo サーバーに追加できます。mongoid.yml
database.yml
注 : Mongoid を追加すると、作成されるすべてのモデルはデフォルトで MongoDB 用に作成されます。Postgres 用の--orm
モデルを生成するオプションを指定できます。