Създавам страницата за плащане за сайт за електронна търговия и имам доста дълга транзакция, която създава нов потребителски модел и нов модел на поръчка. Обвих създаването на тези модели в транзакция, така че ако проверката за единия се провали, другият не се мотае в базата данни. Ето съкратения код в моя 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]}
Объркан съм защо се опитва да рендира шаблоните orders/create и application/create вместо рендиране на orders/new.
Има ли по-добър начин да принудите транзакцията да се провали, така че да се извърши връщането назад?