複数の PostgreSQLデータベース接続を使用して、複雑なデータインポートタスクを実行しています。特定の条件下で、ActiveRecord::StatementInvalid
例外が発生した場合は、の特定のデータベース接続でロールバックを実行する必要があります。ActiveRecord :: StatementInvalid例外からActiveRecord :: Connectionインスタンスを取得できますか?
例外として、ActiveRecord::Connection
インスタンスを取得できないようです。私が得ることができるのはPG::Connection
のインスタンスで、exception.cause.connection
です。残念ながら、ロールバックを正しく実行し、内部ARデータ構造をデータベースと同期させておくためには、ActiveRecordインスタンスが必要です。少なくとも、手動でロールバックを実行するには、最後のセーブポイントの名前が必要です(もしあれば)。
ActiveRecord::Connection
インスタンスをActiveRecord::StatementInvalid
例外からどうやって取得できますか?
あなたは、複数のクライアントを使用していたり、どのようにクライアント(複数)を経由して接続を区別していますか? – Anthony
クライアントは1つだけですが、モデルクラスの複数の接続、つまり「MyModel.establish_connection」と「MyModel.remove_connection」 –