У меня есть набор вставок и обновлений, которые нужно отбросить, если какой-либо из них завершится с ошибкой. Хорошая часть этих обновлений и вставок абстрагируется, поэтому их можно повторно использовать. Когда я начинаю транзакцию, а затем вызвать метод пнуть отведенной вставки, отказ не передается до исходного блока транзакции - это просто обязывает все до этого методаОткат всего, если сбой метода в транзакции
def decline_check
Check.transaction do
# Set default updates, then a voided date if the check has already been printed.
check_attributes = {:status => 'Voided', :status_date => Time.now.strftime('%Y-%m-%d')}
check_attributes[:voided_date] = Time.now.strftime('%Y-%m-%d') if check.status == "Printed"
# Update check status
check.update_attributes!(check_attributes)
decline(current_user)
end
end
private
def decline current_user
# execute some insert here that fails
end
Как я могу получить A откат в decline
для запуска отката в decline_check
?
Вы абсолютно правы. Размещение этого ручного рейза там работало так, как ожидалось - моя проблема была выше, что неправильно отображало сообщение об ошибке. Благодарю. –