После переноса модели с именем «Архив» все тесты завершаются с ошибкой ActiveRecord / сообщением об ошибке в соответствии с:
ActiveRecord::NotNullViolation: SQLite3::ConstraintException: NOT NULL constraint failed: archives.created_at: INSERT INTO "archives" ("some_thing") VALUES ('MyString')
Это было изолировано в новом приложении Rails на новой виртуальной машине, на которой запущена новаяустановите Ubuntu 18.04.2 с Ruby 2.6.1 и Rails 5.2.3, следуя инструкциям по установке проекта Odin.Проблема возникает только во время тестов для моделей с именем «Архив», а удаление атрибутов модели просто меняет ошибку на:
ActiveRecord::StatementInvalid: SQLite3::SQLException: incomplete input: INSERT INTO "archives"
Мой рабочий процесс выглядит следующим образом:
rails new sample_app
cd sample_app
(измените sqlite3 в Gemfile, чтобы использовать версию '~> 1.3.6' для исправления ошибки во время написания этой статьи)
bundle install
rails g model Archive
Создает эту миграцию:
class CreateArchives < ActiveRecord::Migration[5.2]
def change
create_table :archives do |t|
t.timestamps
end
end
end
rails db:migrate
Создает этосхема:
ActiveRecord::Schema.define(version: 2019_04_03_003144) do
create_table "archives", force: :cascade do |t|
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
end
rails db:test
Запускает этот тест: (без комментариев)
require 'test_helper'
class ArchiveTest < ActiveSupport::TestCase
test "the truth" do
assert true
end
end
После запуска теста, который обычно представляет собой заданный проход, Rails возвращает первое сообщение об ошибке ActiveRecordвышеперечисленное.Я чувствую, что мне здесь чего-то не хватает, что мешает мне использовать слово «Архив» для модели.