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的类。
当我开始在数据库中创建一行时,它显示places.id为null,但我认为rails应该自动为其分配一个值,因为它是主键。
1条答案
按热度按时间nimxete21#
它爆炸是因为你告诉rails id的类型是uuid。
Rails不知道如何创建uuid。对于rails应用程序来说,通常的做法是不指定id列的类型。它将为您创建,将是一个整数,并将自动填充。通过指定uuid类型,你已经告诉rails不要做正常的默认事情,所以它让你做你的事情。
重新创建的表没有这一点,你将在你的方式。