如何从Rails中的ActiveRecord :: Base.connection.execute中捕获错误?

时间:2009-12-11 11:17:43

标签: ruby-on-rails ruby activerecord

我想运行原始SQL查询,如下所示:

ActiveRecord::Base.connection.execute(some_query);

我可以捕获执行查询时发生的任何错误吗?如果有,怎么样? execute会返回任何内容吗?它没有在文档中说明。

干杯

3 个答案:

答案 0 :(得分:6)

您可以正常拯救错误。例如:

begin
  ActiveRecord::Base.connection.execute(some_query)
rescue
  # do stuff with exception
end

查看MySql (for example) adapter's code以查看正在发生的事情。

在这种情况下,execute会返回MySql::Result个对象。

答案 1 :(得分:4)

execute方法通常由各自的数据库适配器实现,并从各自的数据库库返回Result对象。因此,如果您使用的是Mysql,则返回值将为Mysql::Result类型。

通常情况下,如果出现错误,该方法只会引发可以获救的异常。

答案 2 :(得分:1)

我想我找到了答案。 Execute语句返回从数据库接收的错误,该错误可以在变量中捕获并显示。