提问人:s-chuck 提问时间:7/21/2023 最后编辑:dbuggers-chuck 更新时间:7/22/2023 访问量:26
我正在轨道上工作,当我尝试在数据库中创建一行时,它显示不为空异常失败
I am working on rails and when i try to create a row in database it shows not null exception failed
问:
class AddPlacesTable < ActiveRecord::Migration[7.0]
def change
create_table :places, id: :uuid do |t|
t.string :name, null:false
t.string :address, null:false
t.string :city, null:false
t.timestamps
end
end
end
这是我的数据库文件,以下是它抛出的错误。
SQLite3::ConstraintException: NOT NULL constraint failed: places.id (ActiveRecord::NotNullViolation)
我的模型文件是空的,它只有一个继承自 ApplicationRecord 的类。
当我开始在我的数据库中创建一行时,它显示 null 表示 places.id 但我认为 rails 应该自动为其分配一个值,因为它是一个主键。
答:
0赞
kwerle
7/22/2023
#1
它之所以爆炸,是因为你已经告诉 rails id 的类型是 uuid。
Rails 不知道如何创建 uuid。对于一个 rails 应用来说,正常的事情是你不要指定 id 列的类型。它将为您创建,并且将是一个整数,并将自动填充。通过指定 uuid 类型,你已经告诉 rails 不要做正常的默认事情,所以它让你做你自己的事情。
如果没有它,重新创建表格,你就可以上路了。
评论