Rails нулевое значение в ошибке столбца (только в тесте)

#ruby-on-rails #ruby #postgresql #testing

#ruby-on-rails #ruby #postgresql #тестирование

Вопрос:

Я создал новую модель и связанную с ней миграцию, но я не создал ни одного экземпляра этой модели. Мой сервер разработки работает нормально, но когда я запускаю свои тесты, каждый тест завершается ошибкой со следующей ошибкой:

DRb:: DRbRemoteError: PG::NotNullViolation: ОШИБКА: нулевое значение в столбце «some_value» отношения «имя_таблицы» нарушает ограничение not-null

some_value является ненулевым столбцом, но я не установил значение по умолчанию, потому что нет разумного значения по умолчанию, и я хочу, чтобы поле было правильно указано при создании записи. Учитывая, что я не создал никаких записей и пока не запускаю тестовый код с использованием этой модели, в чем причина проблемы?

Ответ №1:

Я не создавал вручную никаких экземпляров этой модели, но, как обычно, Rails создает приспособления для каждой новой модели, включая некоторые фиктивные данные. В этом случае ненулевому столбцу было присвоено значение (Rails по умолчанию MyString ), однако это поле является перечислением, поэтому строка не сохраняется в базе данных (где перечисление представлено как целое число), поэтому оно передается как null. Проблема возникает только в тесте (и возникает в каждом тесте), потому что для каждого теста в базу данных загружаются приспособления).

Решение простое: укажите допустимое значение enum или удалите ненужные приспособления!