It's simple this way and we have one place to add logic to when needed (see next commit).
Rails validation doesn't handle unique validation for soft deleted object. So we rescue the exception raise by the database and display a nice error message. We don't want an enterprise to be able to reuse a code in case the voucher get reactivated.