我正在try 创建一个ActiveRecord对象.但我在创建它的过程中遇到了这个错误.

(0.1ms)  ROLLBACK
ActiveRecord::StatementInvalid: PG::InFailedSqlTransaction: ERROR:  current transaction is       aborted, commands ignored until end of transaction block

大家对这个问题有什么 idea 吗.

推荐答案

其他答案都不能解决这个问题.

问题是,当Postgres引发异常时,它会毒害同一连接上的future 交易.

解决方法是回滚有问题的事务:

begin
  ActiveRecord...do something...
rescue Exception => e
  puts "SQL error in #{ __method__ }"
  ActiveRecord::Base.connection.execute 'ROLLBACK'

  raise e
end

reference.

Ruby-on-rails相关问答推荐

在has_many关系中由两个条件 Select

mini_racer gem 0.8.0无法与Ruby 3.1.xBundle 安装

Rails 7,返回具有两个单独条件的活动记录关联,一个在父级,一个在子级

select2 未应用于所有下拉列表;它只适用于数据的最后一条记录

NoMethodError:Puma::Events:Class 的未定义方法字符串

Ruby on Rails 7 与 React 集成

Rails:序列化数据库中的对象?

ActiveRecord 包括.指定包含的列

Rails 自动加载完全大写的名称,如 API

Rails 是否带有未授权异常?

如何从 Rails 路由中删除控制器名称?

Rails 中页面视图的简单计数器

在 Windows 上安装特定的 Ruby on Rails 版本

使用 RSpec 2 关闭一个规范的事务性固定装置

为什么 respond_with 被从 rails 4.2 移除到它自己的 gem 中?

设计记住我和会话

Ruby - 合并两个数组并删除重复的值

在 Rails 中,在特定时区创建特定时间(不是现在)的最佳方式是什么?

从模型中获取验证

没有路由匹配缺少必需的键:[:id]