diff --git a/app/controllers/challenges_controller.rb b/app/controllers/challenges_controller.rb index f122361f4..89356a046 100644 --- a/app/controllers/challenges_controller.rb +++ b/app/controllers/challenges_controller.rb @@ -22,20 +22,27 @@ class ChallengesController < ApplicationController end def create - begin - challenge_count = @shixun.challenges.count - @challenge = Challenge.new(params[:challenge]) - @challenge.position = challenge_count + 1 - @challenge.shixun = @shixun - @challenge.user = User.current - @challenge.st = params[:st] - @challenge.save! - redirect_to edit_shixun_challenge_path(@challenge, :shixun_id => @shixun) - rescue Exception => e - flash[:error] = "#{e.message}" - redirect_to new_shixun_challenge_path(:shixun_id => @shixun, :st => params[:st]) + ActiveRecord::Base.transaction do + begin + challenge_count = @shixun.challenges.count + @challenge = Challenge.new(params[:challenge]) + @challenge.position = challenge_count + 1 + @challenge.shixun = @shixun + @challenge.user = User.current + @challenge.st = params[:st] + if @challenge.save! + # 创建选项 + params[:question].each do |test| + ChallengeQuestion.where(:option_name => option_name,:challenges => challenge_id, :positon => 1, :right_key => true) + end + end + redirect_to edit_shixun_challenge_path(@challenge, :shixun_id => @shixun) + rescue Exception => e + flash[:error] = "#{e.message}" + redirect_to new_shixun_challenge_path(:shixun_id => @shixun, :st => params[:st]) + raise ActiveRecord::Rollback + end end - =begin ActiveRecord::Base.transaction do begin