2016-12-27 5 views
0

У меня есть метод copy, который дублирует объект, а затем изменяет некоторые его атрибуты. При сохранении это дает мне ошибку ActiveRecord::RecordInvalid на Name. Однако атрибут name не имеет ограничения уникальности, поэтому это не должно терпеть неудачу.Что может вызвать ActiveRecord :: RecordInvalid в поле без ограничения уникальности?

Кроме того, имя было изменено, поэтому оно уникально, и отладка метода указывает на то, что это так. Как я могу получить эту ошибку в поле, которое не имеет ограничения уникальности, и IS уникально?

Я видел множество вопросов об этом, связанных с RSpec, но это не в тестовой среде, поэтому это не проблема с БД.

Я понимаю, что у меня не было кода - я ищу общие ответы о том, что может привести к чему-то подобному.

+0

Все, что связано с ошибками? Я имею в виду, что это первое место для просмотра. –

+0

Невозможно ли изменить идентификатор дублирующего объекта? – 31piy

ответ

0

Было бы намного проще определить актуальную проблему, если бы вы могли показать свой код, а также версию Rails. Но если вы ищете общий ответ, то общий ответ заключается в том, что RecordInvalid поднят методами bang, в основном save! и validate! и другими способами, которые называет эти два под ними такими как create!, update!. Это исключение выражается этими методами, когда проверка не выполняется. И проверка может завершиться неудачей из миллиона причин, которые зависят от вашей настройки проверки.

Это исключение также может быть возбуждено, когда эти методы вызывают недействительные связанные записи.

Я также считаю, что проверка может завершиться неудачно, если вы определили свою собственную проверку и вернете false.