В Rails 5, когда определена ассоциация belongs_to
, требуется наличие соответствующей записи по умолчанию. Это означает, что по сравнению с Rails 4 каждая ассоциация belongs_to :foo
в основном добавляет к коду validate :foo, presence: true
.
У вас есть два варианта:
- Следуйте новому Ruby на соглашениях Rails и исправьте свои тесты, добавив все необходимые связанные объекты в модели.
- Вернитесь к старому поведению для этих видов ассоциаций, добавив
, optional: true
к каждой строке belongs_to :foo
в своем коде.
На самом деле есть третий вариант, чтобы отключить это поведение во всем приложении, добавив такую строку в ваш application.rb
Rails.application.config.active_record.belongs_to_required_by_default = true
Но это означает, что ваше приложение больше не будет следовать Ruby соглашениям Rails и значениям по умолчанию, и IMHO это часто приводит к проблемам с последующим обновлением.
Поэтому мой совет: исправьте свои тесты сейчас и сделайте только те ассоциации, которые являются необязательными, которые действительно являются необязательными с точки зрения пользователя - это может занять немного больше времени, но, безусловно, вызовет меньше проблем в будущем.