Trầ*_* Dự 1 ruby database postgresql ruby-on-rails
我在 Rails 中使用本机查询(因为我的查询很复杂,我认为它不能在 中表达ActiveRecord)。所以这是我尝试的方法:
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
Run Code Online (Sandbox Code Playgroud)
此代码第一次成功运行。但是第二次,它会抛出异常。(我正在使用 PostgresSQL)
PG::ConnectionBad(连接已关闭)
如果我删除 line connection.close。我会遇到另一个例外:
PG::DuplicatePstatement(错误:准备好的语句“order_statistic”已经存在
请帮助我如何正确使用原始查询。
谢谢
要进行原始查询,您可以按照以下步骤操作:
ActiveRecord::Base.connection.execute(%{YOUR QUERY HERE})
Run Code Online (Sandbox Code Playgroud)
您的代码中的原因是您已经关闭了与数据库的连接,因此您无法进行进一步查询,重新连接您可以调用的数据库reconnect!:
ActiveRecord::Base.connection.reconnect!
Run Code Online (Sandbox Code Playgroud)
但是我不建议你这样做,rails 已经帮你处理了,不要自己做,让我用我的第一个建议来完成所有原始查询!
| 归档时间: |
|
| 查看次数: |
2677 次 |
| 最近记录: |