Мне нужно создать строку в таблице как билетов, так и пользователей ... Мне просто нужно знать, как обрабатывать, если транзакция завершится с ошибкой.Обработка ошибок в транзакциях ActiveRecord?
@ticket.transaction do
@ticket.save!
@user.save!
end
#if (transaction succeeded)
#.....
#else (transaction failed)
#......
#end
На стороне записки я просто хотел бы поблагодарить всех, кто участвует в переполнения стека для помощи дизайнера узнать больше программирования ... Я ценю время вы, ребята, взять из вашего дня, чтобы ответить на такие вопросы, как N00b это :)
Большое спасибо Мэтт, я ценю это :) – Kevin
Сделка, подобная первой в первом фрагменте (без исключений), вовсе не является транзакцией Rails. Операция, подобная той, что во втором фрагменте, должна спасти все исключения (rescue => e), сбой ручного управления и, возможно, снова включить то же исключение. – Ando
Извините Ando, но это явно транзакция ActiveRecord, о чем свидетельствует метод «транзакция». Основная точка транзакции заключается в том, что первое действие (сохранение билета) отменяется, если второе не удается. Это был очень простой пример для нового разработчика ... очевидно, что это заменит комментарий обработкой отказа. Спасибо, что поделились своей точкой зрения на обработку ошибок, но пример исходит от «Agile Web Development with Rails», как писал первый автор Rails! Поэтому я бы сделал исключение из вашей характеристики того, что не генерирует исключение, а не Rails – MattMcKnight