Согласно сохранить удары головой, активная запись приведет вас в бешенство, нам следует избегать использования save!
и rescue
идиомы для исключительных ситуации. Учитывая, что для модели требуется @post.mark_rejected
.
Если код в mark_rejected
не удается выполнить из-за одной из нижеперечисленных проблем, следует ли исключить исключение?
- если есть проблема проверки
- если для поля, отличного от nullable, присваивается значение null
- если в базе данных была потеря связи
Если мы не генерируем исключение, то:
- Действия контроллера должны проверять значение возврата
mark_rejected
и делать это. - мы не ожидаем исключения из этого вызова метода, поэтому мы не пишем предложение
rescue
в действии контроллера, поэтому исключение пузырится до (где угодно) и, вероятно, будет отображаться как часть ( 500 HTTP?)
Пример кода:
def mark_rejected
...
save!
end
или
def mark_rejected
...
save
end