Я запускаю библиотеку в моем приложении rails 3, которое выполняет несколько вставок и обновлений для разных моделей. Это похоже на импорт файла списка покупок CSV, который может быть с ошибками, которые прерывают функцию импорта.
Итак, у меня есть что-то вроде этого:
begin
ActiveRecord::Base.transaction do
@csv.each_with_index do |row, line_number|
begin
shopping_list_importer.import(row)
rescue Exception => e
invalid_objects << {:message => e.message, :line_number => line_number+2}
end
end
raise ActiveRecord::StatementInvalid if invalid_objects.present?
end
rescue ActiveRecord::StatementInvalid
end
Моя проблема в том, что когда создается новый элемент списка покупок, он отправляет электронное письмо пользователю.
И когда происходит какая-то ошибка, электронное письмо уже было отправлено, и транзакция не блокирует это. Это нормально, я понимаю, почему это происходит, и я должен отправлять электронные письма после импорта, но мой вопрос в том, есть ли более простой способ сделать это и продолжать использовать блок транзакций?
Спасибо заранее,
Andre.