加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 错误:当前事务被中止,命令被忽略,直到事务块

发布时间:2020-12-17 03:56:02 所属栏目:百科 来源:网络整理
导读:我的应用程序中有一辆模型车.我添加了色域.我的迁移看起来像这样: class AddColorToCars ActiveRecord::Migration def change add_column :cars,:color,:string Car.all.each do |car| car.color = "silver" car.save end endend 以我的形式我添加: = f.in
我的应用程序中有一辆模型车.我添加了色域.我的迁移看起来像这样:

class AddColorToCars < ActiveRecord::Migration
  def change
    add_column :cars,:color,:string
    Car.all.each do |car|
      car.color = "silver"
      car.save
    end
  end
end

以我的形式我添加:

= f.input :color

在汽车模型中,我添加了验证:

validates :color,presence: true

当我尝试编辑现有的Car并将其颜色更改为nil时出现以下错误:

ERROR: current transaction is aborted,commands ignored until end of transaction block

当我禁用我的验证时,一切正常.怎么了?

解决方法

这与PostgreSQL的Rails中的 transactions有关.

On some database systems,such as PostgreSQL,database errors inside a
transaction cause the entire transaction to become unusable until it’s
restarted from the beginning.

您有一个被捕获的事务中止.在ActiveRecord模型上添加验证时有时会导致这种情况.出于某种原因,一旦打破了PostgreSQL的INSERT,就无法在事务中的表上创建任何内容.此外,添加验证有时会破坏INSERT.

快速解决方案重新启动您的Rails服务器,您的验证将完美无缺.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读