Railsで作業していて、データベースに行を作成しようとすると、not null例外が失敗したと表示されます
概要
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は自動的に値を割り当てるべきだと思います。
解決策
id が uuid 型であることを Rails に伝えたため、爆発しています。
Rails は uuid を作成する方法を知りません。 Rails アプリの通常のことは、ID 列のタイプを指定しないことです。これは整数で自動的に作成され、自動的に入力されます。 uuid タイプを指定することで、通常のデフォルトの動作を実行しないように Rails に指示し、それを実行できるようにします。
それを行わずにテーブルを再作成すれば、すぐに作業を進めることができます。