class ExaminationItem < ApplicationRecord enum item_type: { SINGLE: 0, MULTIPLE: 1, JUDGMENT: 2, COMPLETION: 3, SUBJECTIVE: 4, PRACTICAL: 5, PROGRAM: 6 } belongs_to :examination_bank, touch: true belongs_to :item_bank, optional: true has_many :examination_item_choices, dependent: :destroy has_one :examination_item_analysis, dependent: :destroy belongs_to :container, polymorphic: true, optional: true def analysis examination_item_analysis&.analysis end def item_choices examination_item_choices end def public 0 end def quotes 0 end # 题库复制 def new_item item, exam, score, position attributes = {examination_bank: exam, item_bank: item, name: item.name, item_type: item.item_type, difficulty: item.difficulty, score: score, position: position} self.update!(attributes) item.increment!(:quotes) if item.item_type == "PROGRAM" new_hack = item.container.fork self.update!(container: new_hack) else ExaminationItemAnalysis.create!(analysis: item.analysis, examination_item_id: self.id) item.item_choices.each do |choice| examination_item_choices << ExaminationItemChoice.new(choice_text: choice.choice_text, is_answer: choice.is_answer) end end end end