class ExaminationBanksController < ApplicationController before_action :require_login def index exams = ExaminationBankQuery.call(params) @exams_count = exams.size @exams = paginate exams.includes(:user, :examination_items) end def show end def create ActiveRecord::Base.transaction do exam = ExaminationBank.new(user: current_user) # 保存试卷基础信息 exam = ExaminationBanks::SaveExaminationBankService.call(exam, form_params) # 将试题篮中的试题发送到试卷,试卷的题目与试题独立 current_user.item_baskets.includes(:item_bank).each do |basket| item = basket.item_bank if item.present? new_item = ExaminationItem.new(examination_bank: exam, item_bank: item, name: item.name, item_type: item.item_type, difficulty: item.difficulty, score: basket.score, position: basket.position) if new_item.save! item.increment!(:quotes) if item.item_choices.present? item.item_choices.each do |choice| new_item.examination_item_choices << ExaminationItemChoice.new(choice_text: choice.choice_text, is_answer: choice.is_answer) end end end end end current_user.item_baskets.destroy_all end render_ok end def edit end private def form_params params.permit(:discipline_id, :sub_discipline_id, :difficulty, :name, :duration, tag_discipline_id: []) end end