gpt4 book ai didi

ruby-on-rails - 错误 : current transaction is aborted, 命令被忽略,直到事务 block 结束,Ruby on Rails

转载 作者:数据小太阳 更新时间:2023-10-29 07:23:46 24 4
gpt4 key购买 nike

我的应用程序中有一个模型 Car。我添加了色域。我的迁移看起来像这样:

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

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

最佳答案

这都与transactions有关在 Rails 中使用 PostgreSQL

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 服务器,您的验证将完美运行。

关于ruby-on-rails - 错误 : current transaction is aborted, 命令被忽略,直到事务 block 结束,Ruby on Rails,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23995556/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com