В первом случае, если любой из сохранить!оператор не выполняется, тогда все предыдущие сохраненные модели будут откатаны.Например: если setting.save!
завершится неудачей, то setting.save!
, user.save!
и profile.save!
будут откатаны.
Но во втором случае, если есть, сохранить!оператор не выполняется, тогда он будет только откатывать этот оператор, а также вызовет исключение.Например: если setting.save!
завершится неудачно, будет выполнен откат только setting.save!
.
Оба оператора будут работать одинаково только в 1 случае, когда первый оператор завершится неудачно 'user.save!'как исключение, и во втором случае последующее утверждение не будет выполнено
Разница между save
и save!
заключается в том, что последнее вызовет исключение, но оба не сохранят значение объекта в таблицу.если проверки не пройдены.