Возможно, вам следует использовать before_validation
, если вы проверяете. Причина в том, что если у вас есть другие проверки, которые не пройдены, ваши check_data никогда не будут запущены, и поэтому пользователь никогда не увидит эти ошибки. Это может привести к ситуации, когда они вводят данные проекта, получают ошибку проверки, исправляют эту ошибку, а затем запускаются ваши check_data и сообщают им о другой ошибке проверки. Если вы используете before_validation, они сразу увидят все ошибки.
Я не знаю, поможет ли это на самом деле исправить ошибку, с которой вы столкнулись при активном несохранении, но ошибка, которую вы заметили при ошибках, не отображаемых в форме, связана с использованием redirect_to edit_project_url
- вам, вероятно, следует использовать
render :edit
от вашего действия по обновлению и
render :new
из вашего действия создания. errors
на самом деле является частью объекта @project
, поэтому, когда вы перенаправляете (вместо рендеринга) новое действие, создается новый объект. При перенаправлении на страницу редактирования существующий объект загружается из базы данных. Вот как ваш массив ошибок исчезает. Если вы выполняете рендеринг вместо перенаправления, ваши ошибки останутся на объекте и будут отображаться в вашем представлении (при условии, что вы все правильно настроили).
Надеюсь, это поможет, удачи в определении проблемы с активным состоянием!