def account_create
# Instead of this:
post_account_setup if account.save
# Do this:
account.save!
post_account_setup
end
Вызов save
вместо save!
не вызовет исключения; он просто вернет false
.
В качестве альтернативы, некоторые утверждают, что использование исключения для управления потоком, как это, является плохой практикой. Так что вместо этого вы можете сделать что-то вроде:
def perform
# ...
if account.valid?
account.save! # This should never fail!
post_account_create
OpenStruct.new(success?: true, user: user, account: account, error: nil)
else
OpenStruct.new(success?: false, user: user, account: account, error: account.errors)
end
end
Или, аналогично:
def perform
# ...
if account.save
post_account_create
OpenStruct.new(success?: true, user: user, account: account, error: nil)
else
OpenStruct.new(success?: false, user: user, account: account, error: account.errors)
end
end