Я создаю страницу оформления заказа для сайта электронной коммерции, и у меня есть довольно длинная транзакция, которая создает новую модель пользователя и новую модель заказа. Я обернул создание этих моделей в транзакцию, чтобы в случае сбоя проверки одной из них другая не зависала в базе данных. Вот урезанный код в моем OrdersController:
rescue_from ActiveRecord::Rollback, with: :render_new
def render_new
render action: 'new'
end
ActiveRecord::Base.transaction do
@user = User.new params[:user]
unless @user.save
raise ActiveRecord::Rollback
end
//More stuff
...
@order = Order.new params[:order]
...
unless @order.save
raise ActiveRecord::Rollback
end
end
Ошибка, которую я вижу, такова:
Отсутствует шаблон заказов/создания, приложения/создания с {:locale=>[:en], :formats=>[:html], :handlers=>[:erb, :builder, :coffee]}
Я смущен тем, почему он пытается отобразить заказы/создание шаблонов и приложение/создать вместо рендеринга заказов/новых.
Есть ли лучший способ принудительно завершить транзакцию, чтобы произошел откат?