レールで、どうやって直接実行SQLコードを異なるデータベース?
-
09-06-2019 - |
質問
ここにあります。
私は書きレールを適用するモニタデータの品質が特定のデータベースです。そのために、必を実行することができるようにな直接SQL文に渡これらのデータベースのコースと同じではありませんの駆動用として使用されるレールを適用モデルです。この手段を利用できませんのtrickと思う、今日この頃なのでActiveRecordベース接続します。
のデータベースIに接続する必要があるっているものと考えられる設計時間(すなわち:ただその詳細データベースです。yaml).むしろ、私は"モデルdatabase_details'のユーザーのために使用する入力の上、データベースアプリケーションからの実行のクエリを行います。
では、接続にこれらのデータベースが動的に解決実行時のみです。
する方法を教えてください。
おかげさ
ロロ"号
解決
あったかのようなことがたへのメールが受信できるようにインスタンスの外部アプリケーションしたコード、例えば次のようなもの:
def get_custom_connection(identifier, host, port, dbname, dbuser, password)
eval("Custom_#{identifier} = Class::new(ActiveRecord::Base)")
eval("Custom_#{identifier}.establish_connection(:adapter=>'mysql', :host=>'#{host}', :port=>#{port}, :database=>'#{dbname}', " +
":username=>'#{dbuser}', :password=>'#{password}')")
return eval("Custom_#{identifier}.connection")
end
この主な変更ActiveRecord::ベース接続のモデルからは継承し、実行できるSQLこの接続-廃棄のオブジェクトが行われます。
他のヒント
できるプログラムの確立接続を使うこ
ActiveRecord::Base.establish_connection(
:adapter => "mysql",
:host => "localhost",
:username => "myuser",
:password => "mypass",
:database => "somedatabase"
)
ものと置き換えることができsomedatabaseによるdatabase_model.database_name値です。のadatpterすべて
ActiveRecord::ベース。establish_connection書
を利用することができ
ActiveRecord::Base.find_by_sql("select * ")
る実行を行うsqlクエリ。
ActiveRecord::ベース。find_by_sql書
Mrマット った資料に不備がある場合は
詳細情報(古いもののデザインアプローチすることができます。 こちらの そして、再接続の通常のデータベースが終わった時点で:)
ることができることを通じて ます。establish_connection