You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
46 lines
1.3 KiB
46 lines
1.3 KiB
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
|