2016-07-26 20 views
0

Railsでネイティブクエリを使用しています(クエリが複雑で、ActiveRecordで表現できないと思います)。だから私はどのように試しています:Rails:PG :: ConnectionBad(接続が閉じている)

get do 
    connection = ActiveRecord::Base.connection.raw_connection 
    connection.prepare('order_statistic', @@sql) 
    data = connection.exec_prepared('order_statistic', [params[:id]]) 
    connection.close() 
    data 
end 

このコードは初めて正常に実行されます。しかし、2回目に、例外がスローされます。私はラインconnection.closeを削除する場合

PG::ConnectionBad (connection is closed)

を(私はPostgresSQLのを使用しています)。別の例外を満たします:

PG::DuplicatePstatement (ERROR: prepared statement "order_statistic" already exists

生のクエリを正しく使用する方法を教えてください。あなたがこれを従うことができる生のクエリを実行するには

おかげ

答えて

3

ActiveRecord::Base.connection.execute(%{YOUR QUERY HERE}) 

あなたのコード内の理由は、あなたがすでにデータベースへの接続を閉じるので、あなたが再接続し、さらにクエリを実行することはできませんレールはすでに、それを自分で行わない、あなたはそれを扱う助ける私の最初のsuggestiを使用してみましょう、

ActiveRecord::Base.connection.reconnect! 

しかし、私はあなたがそれを行うお勧めしません:デシベルあなたのようなreconnect!を呼び出すことができますすべての生のクエリを完了するには!

関連する問題