socialforge/app/models/student_work_test.rb

53 lines
977 B
Ruby
Raw Normal View History

2015-07-16 17:33:15 +08:00
# encoding: utf-8
class StudentWorkTest < ActiveRecord::Base
attr_accessible :student_work_id, :results, :status, :src, :uwait_time
belongs_to :student_work
2015-07-16 17:33:15 +08:00
2015-08-28 12:04:49 +08:00
serialize :results, Array
2015-07-16 17:33:15 +08:00
def status_to_s
2015-08-28 12:04:49 +08:00
case self.status.to_i
2015-07-16 17:33:15 +08:00
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
2015-08-28 12:04:49 +08:00
if self.status.to_i == 0
2015-09-09 00:43:54 +08:00
100
elsif self.results.empty?
2015-07-16 17:33:15 +08:00
0
2015-09-09 00:43:54 +08:00
else
get_success_count * 100 / self.results.count
2015-07-16 17:33:15 +08:00
end
end
2015-08-28 12:04:49 +08:00
2015-09-09 00:43:54 +08:00
private
def get_success_count
self.results.inject(0) do |sum, result|
sum += (result["status"] && result["status"].to_i == 0 ? 1 : 0)
2015-09-09 00:43:54 +08:00
end || 0
end
end