create_table "cars_parts", force: :cascade do |t|
t.integer "car_id"
t.integer "part_id"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.index ["car_id"], name: "index_cars_parts_on_car_id"
t.index ["part_id"], name: "index_cars_parts_on_part_id"
end
У вас есть ненулевое ограничение на created_at
в cars_parts
.
В ошибке вы можете увидеть, что created_at
не может быть пустым:
SQLite3::ConstraintException: NOT NULL constraint failed: cars_parts.created_at
Итак, в вашем yml-файле вам нужно установить create_at:
one:
car_id: 1
part_id: 1
created_at: Time.current
updated_at: Time.current
two:
car_id: 2
part_id: 2
created_at: Time.current
updated_at: Time.current
РЕДАКТИРОВАТЬ:
Как отметил Себастьян, это не идеальное решение,AR должен автоматически добавлять эти временные метки.
Реальная проблема в том, что вы назвали свою модель CarParts
, поэтому она не находит модель. Вам следует переименовать файл в cars_part.rb
, а имя модели - в CarsPart
.
Другие люди, у которых возникла эта проблема, объясняют причину, по которой модель не найдена:
https://github.com/rails/rails/issues/23316