«Статус неверен» - Активная запись - Rails 4.1 -> 5.2 - PullRequest
0 голосов
/ 01 марта 2020

Я работаю над обновлением приложения Ruby 2.2.2 (Rails 4.1) до Ruby 2.5.7 (Rails 5.2) и для пары моделей Я получаю некоторые ошибки

При поиске, кажется, что есть какие-то общие c правила / сообщения проверки activerecord? Сообщения:

Status is invalid
User is invalid`

Я в лучшем случае новичок с Ruby - поэтому любые предложения о том, как лучше справиться с этой ошибкой, приветствуются!

1 Ответ

1 голос
/ 01 марта 2020

В 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 это часто приводит к проблемам с последующим обновлением.

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

...