Rails 5.2.2.1 ActiveRecord :: RecordInvalid: проверка не удалась - PullRequest
0 голосов
/ 22 марта 2019

Я обновил приложение моей компании с Rails 5.2.1 до Rails 5.2.2.1.После запуска нашего комплекта тестов после обновления у меня возникают проблемы с проверкой уникальности в рамках модели, в частности, при добавлении модели в отношение ActiveRecord другой модели.Например, в нашем приложении, если бы я сделал @person.cars << @car, мы бы запустили проверку уникальности (validates :car_id, uniqueness: { scope: :group_id }. Даже в сценарии, где @person.cars изначально был пуст, наша ветвь после обновления выдает ошибки проверки на этомпроверка уникальности. Эти контрольные примеры работают в нашей главной ветке (до обновления), но не в нашей ветке обновлений (после обновления). Никаких других изменений в приложении не было, кроме обновления Rails с 5.2.1 до 5.2.2.1Мне интересно, если кто-нибудь знает о каких-либо существующих ошибках или проблемах, связанных с проверками уникальности Rails 5.2.2.1, которые могут быть причиной этого. Я просмотрел журналы изменений как Rails и ActiveRecord, так и несколько других зависимостей, которые были обновлены., но я не смог ничего найти.

1 Ответ

0 голосов
/ 22 марта 2019

Похоже, это проблема с изменением, внесенным в Rail * ActiveRecord::Associations, который использовался для удаления дубликатов в версии 5.2.1 при добавлении в ассоциацию ActiveRecord.Это никогда не вызывало исключение RecordInvalid, так как дубликат был бы удален до этого.В 5.2.2.1, похоже, что это было удалено, и любые дубликаты, добавляемые в ассоциацию, больше не будут удаляться с преимуществом (скорее всего, имитирующие функциональность Ruby + =).Мне пришлось изменить все ваши использования + = на отношение к =, чтобы гарантировать, что дубликаты больше не добавляются.

Извините, что не смог опубликовать какой-либо код или трассировки стека.Трассировка стека была очень специфична для приложения и не была бы полезна вообще, а код является проприетарным.Ценю помощь!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...