ruby 我在Rails上工作,当我尝试在数据库中创建一行时,它显示not null异常失败

des4xlb0  于 2023-08-04  发布在  Ruby
关注(0)|答案(1)|浏览(72)
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应该自动为其分配一个值,因为它是主键。

nimxete2

nimxete21#

它爆炸是因为你告诉rails id的类型是uuid。
Rails不知道如何创建uuid。对于rails应用程序来说,通常的做法是不指定id列的类型。它将为您创建,将是一个整数,并将自动填充。通过指定uuid类型,你已经告诉rails不要做正常的默认事情,所以它让你做你的事情。
重新创建的表没有这一点,你将在你的方式。

相关问题