3

私のアプリは、多くの理由で複数のデータベースで動作する必要があります。arg に基づいて、新しい db 接続を確立する必要がある db 接続を確立するためのカスタム モデルに取り組んでいます。したがって、たとえば、次を使用して新しい接続を確立する前に:

ActiveRecord::Base.establish_connection new_config 

new_configdatabase.yml のカスタマイズされたクローンはどこにありますか

データベース接続が確立される前に、新しい DB が存在するかどうかを確認したい。したがってdb_exists? db_name、db が存在するかどうかに基づいてブール値を返す関数が必要です。

4

2 に答える 2

1

Rails アプリを使ってデータベース自体を管理しているので、常にこのような作業を行う必要があります。現在の Rails データ ストア以外のデータベースについて知りたいと思うのは、当然のことです。これは、現在の Rails アプリに含まれていないファイルの存在を確認するのとよく似ています。

特定の状況で役立つ可能性のあるソリューションを次に示します (これは MySQL の場合です)。

def db_exists?(db_name)
  ActiveRecord::Base.connection.execute("SHOW DATABASES LIKE '#{db_name}'").size > 0
end

あなたはいくつかのデータベース接続を持っている必要がありますが、存在を照会しているデータベースのためのものである必要はありません. (この実装はSQLインジェクションから保護されていないことに注意してください...クリーンで有効なdb_nameのみを渡す必要があります。)

于 2014-04-17T22:19:00.477 に答える