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 有关.
您有一个被捕获的事务中止.在ActiveRecord模型上添加验证时有时会导致这种情况.出于某种原因,一旦打破了PostgreSQL的INSERT,就无法在事务中的表上创建任何内容.此外,添加验证有时会破坏INSERT. 快速解决方案重新启动您的Rails服务器,您的验证将完美无缺. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |