В Ruby существует соглашение, что методы, заканчивающиеся на !
, обозначают «опасный» метод. Метод либо изменяет свой получатель, либо вызывает исключение. ActiveRecord::Persistence
имеет как нормальные, так и "опасные" методы:
save
и save!
create
и create!
update
и update!
В последнем случае возникает исключение ActiveRecord::RecordInvalid
, если какая-либо из проверок не пройдена. Это действительно полезно, когда вы создаете записи из исходного файла, в своих тестах или внутри транзакции.
Но когда вы обычно обрабатываете пользовательский ввод, вы хотите использовать обычный метод save
в качестве неверного ввода это просто жизненный факт, а не исключительное событие. Если вы полагаетесь на изменение кода на .save!
для отладки, вам действительно следует научиться использовать pry или byebug вместо того, чтобы войти в код.
Вы также должны исправить форму, чтобы привязать ее к @review
переменная экземпляра, чтобы пользовательский ввод не удалялся. Никто не любит плохо реализованные формы, которые заставляют их перепечатывать все.
<%= form_for @review.new do |f|%>
# ...
<% end %>