socialforge/app/models/student_work_test.rb

53 lines
964 B
Ruby

# encoding: utf-8
class StudentWorkTest < ActiveRecord::Base
attr_accessible :student_work_id, :results, :status, :src
belongs_to :student_work
serialize :results, Array
def status_to_s
case self.status.to_i
when -1
'编译出错'
when -2
'答题错误'
when -3
'答案错误'
when 1
'运行出错'
when 2
'超时'
when 3
'内存超出'
when 4
'输出超出'
when 5
'禁用函数'
when 6
'其他错误'
when 0
'成功'
else
'未知错误'
end
end
def test_score
if self.status.to_i == 0
100
elsif self.results.empty?
0
else
get_success_count * 100 / self.results.count
end
end
private
def get_success_count
self.results.inject(0) do |sum, result|
sum += (result["status"] && result["status"].to_i == 0 ? 1 : 0)
end || 0
end
end