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.
educoder/app/models/examination_item.rb

46 lines
1.3 KiB

5 years ago
class ExaminationItem < ApplicationRecord
5 years ago
enum item_type: { SINGLE: 0, MULTIPLE: 1, JUDGMENT: 2, COMPLETION: 3, SUBJECTIVE: 4, PRACTICAL: 5, PROGRAM: 6 }
5 years ago
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
5 years ago
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
5 years ago
# 题库复制
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
5 years ago
end