Merge branch 'dev_aliyun' of http://bdgit.educoder.net/Hjqreturn/educoder into dev_aliyun

dev_forum
cxt 6 years ago
commit a13beed00e

@ -38,7 +38,8 @@ class AttachmentsController < ApplicationController
content_type = upload_file.content_type.presence || 'application/octet-stream'
remote_path = file_save_to_ucloud(local_path[folder.size, local_path.size], local_path, content_type)
# remote_path = file_save_to_ucloud(local_path[folder.size, local_path.size], local_path, content_type)
remote_path = nil # TODO 暂时本地上传,待域名配置后方可上传至云端
logger.info "local_path: #{local_path}"
logger.info "remote_path: #{remote_path}"

@ -9,11 +9,11 @@ class ExerciseAnswersController < ApplicationController
q_type = @exercise_question.question_type #试卷的类型
choice_id = params[:exercise_choice_id].present? ? params[:exercise_choice_id] : ""
answer_text = params[:answer_text].present? ? params[:answer_text] : "" #为字符串
if q_type < 4 && (q_type != 1) && choice_id.blank?
if q_type < Exercise::SUBJECTIVE && (q_type != Exercise::MULTIPLE) && choice_id.blank?
normal_status(-1,"请选择序号")
else
ea = @exercise_question.exercise_answers.search_answer_users("user_id",current_user.id) #试卷的当前用户的答案
if q_type == 0 || q_type == 2 #选择题(单选)/判断题
if q_type == Exercise::SINGLE || q_type == Exercise::JUDGMENT #选择题(单选)/判断题
ea_choice = ea.search_exercise_answer("exercise_choice_id",choice_id).first
answer_option = {
:user_id => current_user.id,
@ -30,7 +30,7 @@ class ExerciseAnswersController < ApplicationController
ex_a = ExerciseAnswer.new(answer_option)
ex_a.save!
end
elsif q_type == 1 #多选题的
elsif q_type == Exercise::MULTIPLE #多选题的
choice_ids = params[:exercise_choice_id].present? ? params[:exercise_choice_id] : []
ea_ids = ea.pluck(:exercise_choice_id)
@ -53,7 +53,7 @@ class ExerciseAnswersController < ApplicationController
ea_answer = ea.search_answer_users("exercise_choice_id",old_ids)
ea_answer.destroy_all
end
elsif q_type == 3 #填空题
elsif q_type == Exercise::COMPLETION #填空题
answer_option = {
:user_id => current_user.id,
:exercise_question_id => @exercise_question.id,
@ -67,7 +67,7 @@ class ExerciseAnswersController < ApplicationController
ex_new = ExerciseAnswer.new(answer_option)
ex_new.save!
end
elsif q_type == 4 #简答题
elsif q_type == Exercise::SUBJECTIVE #简答题
answer_option = {
:user_id => current_user.id,
:exercise_question_id => @exercise_question.id
@ -110,7 +110,7 @@ class ExerciseAnswersController < ApplicationController
elsif @exercise_user.commit_status == 1
normal_status(-1,"已提交/已结束的试卷不允许修改!")
else
if (@exercise_user_status == 3 && @exercise_user.commit_status == 0) || (@exercise.time > 0 && @exercise_user.start_at.present? && ((@exercise_user.start_at + (@exercise.time.to_i + 1).minutes) < Time.now))
if (@exercise_user_status == Exercise::DEADLINE && @exercise_user.commit_status == 0) || (@exercise.time > 0 && @exercise_user.start_at.present? && ((@exercise_user.start_at + (@exercise.time.to_i + 1).minutes) < Time.now))
objective_score = calculate_student_score(@exercise,current_user)[:total_score]
subjective_score = @exercise_user.subjective_score < 0.0 ? 0.0 : @exercise_user.subjective_score
total_score = objective_score + subjective_score

@ -590,7 +590,7 @@ class ExerciseQuestionsController < ApplicationController
end
def validate_params
normal_status(-1,"题目不允许为空!") if (params[:question_title].blank? && params[:question_type].to_i !=5 ) #除了实训题,其余题目必需有题干
normal_status(-1,"题目不允许为空!") if (params[:question_title].blank? && params[:question_type].to_i != Exercise::PRACTICAL ) #除了实训题,其余题目必需有题干
normal_status(-1,"问题类型不允许为空!" ) if params[:question_type].blank?
normal_status(-1,"分值不允许为空!" ) if params[:question_score].blank? && params[:question_scores].blank? #分值的数组或参数必需存在一个
if params[:question_score].present? && params[:question_score].to_f <= 0.0 #问题类型存在,则分值不能为空,且必需大于0

@ -208,13 +208,13 @@ class ExercisesController < ApplicationController
@ex_status = @exercise.get_exercise_status(current_user)
exercise_id_array = [@exercise.id]
@exercise_publish_count = get_user_permission_course(exercise_id_array,2).size #是否存在已发布的
@exercise_unpublish_count = get_user_permission_course(exercise_id_array,1).size #是否存在未发布的
@exercise_publish_count = get_user_permission_course(exercise_id_array,Exercise::PUBLISHED).size #是否存在已发布的
@exercise_unpublish_count = get_user_permission_course(exercise_id_array,Exercise::UNPUBLISHED).size #是否存在未发布的
if (@exercise_publish_count == 0) && (@exercise_unpublish_count == 0) #即表示没有分班
if @ex_status == 1
if @ex_status == Exercise::UNPUBLISHED
@exercise_unpublish_count = 1 #试卷未发布,且课堂没有分班的时候
elsif @ex_status == 2
elsif @ex_status == Exercise::PUBLISHED
@exercise_publish_count = 1 #试卷未发布,且课堂没有分班的时候
end
end
@ -368,7 +368,7 @@ class ExercisesController < ApplicationController
exercise_bank_question = current_ex_bank.exercise_bank_questions.new option
exercise_bank_question.save
## 试卷选项的输入
if q.question_type != 5 #不为实训题时,试卷选项加入试题答案库
if q.question_type != Exercise::PRACTICAL #不为实训题时,试卷选项加入试题答案库
ex_choices = q.exercise_choices
ex_standard = q.exercise_standard_answers
ex_choices.each do |c|
@ -422,8 +422,8 @@ class ExercisesController < ApplicationController
@user_published_setting = @exercise.exercise_group_settings
.find_in_exercise_group("course_group_id",@being_setting_course_ids) #当前用户已发布班级的试卷设置
exercise_ids = [@exercise.id]
@exercise_publish_count = get_user_permission_course(exercise_ids,2).count #判断当前用户是否有试卷已发布的分班,用于显示立即截止/撤销发布
@exercise_unpublish_count = get_user_permission_course(exercise_ids,1).count #判断当前用户是否有试卷未发布的分班,用户显示立即发布
@exercise_publish_count = get_user_permission_course(exercise_ids,Exercise::PUBLISHED).count #判断当前用户是否有试卷已发布的分班,用于显示立即截止/撤销发布
@exercise_unpublish_count = get_user_permission_course(exercise_ids,Exercise::UNPUBLISHED).count #判断当前用户是否有试卷未发布的分班,用户显示立即发布
@exercise_users_count = @exercise.exercise_users.commit_exercise_by_status(1).count #判断当前试卷是否有已提交的
# ## 需添加发送消息的接口,稍后添加
rescue Exception => e
@ -444,7 +444,7 @@ class ExercisesController < ApplicationController
exercise_status = @exercise.get_exercise_status(current_user)
if exercise_status == 1 && course_group_ids.size > 0 # 试卷未发布且老师的分班大于1 ,才可以修改统一设置,否则按试卷默认的来处理
if exercise_status == Exercise::UNPUBLISHED && course_group_ids.size > 0 # 试卷未发布且老师的分班大于1 ,才可以修改统一设置,否则按试卷默认的来处理
unified_setting = params[:unified_setting]
else
unified_setting = @exercise.unified_setting
@ -469,7 +469,7 @@ class ExercisesController < ApplicationController
params_end_time = params[:end_time].to_time
end
if (exercise_status != 1) && (@exercise.publish_time != params_publish_time)
if (exercise_status != Exercise::UNPUBLISHED) && (@exercise.publish_time != params_publish_time)
normal_status(-1,"已发布/已截止,不允许修改发布时间")
elsif params_publish_time.present? && params_end_time.present? && params_end_time < params_publish_time
normal_status(-1,"截止时间不能小于发布时间")
@ -590,7 +590,7 @@ class ExercisesController < ApplicationController
:end_time => e_time
}
@exercise.update_attributes(exercise_params)
if @exercise.exercise_status == 2
if @exercise.exercise_status == Exercise::PUBLISHED
if @exercise.course_acts.size == 0
@exercise.course_acts << CourseActivity.new(:user_id => @exercise.user_id,:course_id => @exercise.course_id)
end
@ -689,7 +689,7 @@ class ExercisesController < ApplicationController
ActiveRecord::Base.transaction do
begin
check_ids = Exercise.where(id: params[:check_ids])
ex_end_time = params[:end_time].to_time
ex_end_time = params[:end_time].blank? ? Time.at(((1.month.since.to_i)/3600.0).ceil * 3600) : params[:end_time].to_time
check_ids.each do |exercise|
if exercise.present?
if exercise.unified_setting
@ -707,7 +707,6 @@ class ExercisesController < ApplicationController
ex_unified = true
e_time = ex_end_time
else
e_time = exercise.exercise_group_settings.end_time_no_null.map(&:end_time).max
ex_unified = false
g_course.each do |i|
exercise_group_setting = exercise.exercise_group_settings.find_in_exercise_group("course_group_id",i).first #根据课堂分班的id寻找试卷所在的班级
@ -725,7 +724,8 @@ class ExercisesController < ApplicationController
new_exercise_group.save
end
end
group_ids = params[:group_ids]
# group_ids = params[:group_ids]
e_time = exercise.exercise_group_settings.end_time_no_null.map(&:end_time).max
end
else
exercise.exercise_group_settings.destroy_all
@ -745,7 +745,7 @@ class ExercisesController < ApplicationController
if exercise.course_acts.size == 0
exercise.course_acts << CourseActivity.new(:user_id => exercise.user_id,:course_id => exercise.course_id)
end
ExercisePublishNotifyJob.perform_later(exercise.id, group_ids)
ExercisePublishNotifyJob.perform_later(exercise.id, g_course)
end
end
end
@ -784,15 +784,9 @@ class ExercisesController < ApplicationController
course_students = @course.students #课堂的全部学生数
check_ids.each do |exercise|
exercise_status= exercise.get_exercise_status(current_user)
if exercise_status == 2 #跳过已截止的或未发布的
if exercise_status == Exercise::PUBLISHED #跳过已截止的或未发布的
g_course = params[:group_ids]
if g_course.present?
# user_course_groups= @course.teacher_course_groups.get_user_groups(current_user.id)
# if user_course_groups.present?
# teacher_course_group_ids = user_course_groups.pluck(:course_group_id)
# else
# teacher_course_group_ids = @course.course_groups.pluck(:id)
# end
teacher_course_group_ids = @course.charge_group_ids(current_user)
if g_course.map(&:to_i).sort == teacher_course_group_ids.sort #开始为统一设置
exercise.exercise_group_settings.destroy_all
@ -878,7 +872,7 @@ class ExercisesController < ApplicationController
ex_question_ids = @exercise.exercise_questions.pluck(:id)
exercise_user = @exercise.exercise_users.exercise_commit_users(current_user.id).first
if exercise_user.present?
if exercise_user.commit_status == 1 && @exercise.get_exercise_status(current_user) == 2 #用户已提交且试卷提交中
if exercise_user.commit_status == 1 && @exercise.get_exercise_status(current_user) == Exercise::PUBLISHED #用户已提交且试卷提交中
if @exercise.time == -1 || ((Time.now.to_i - exercise_user.start_at.to_i) < @exercise.time.to_i * 60)
exercise_user.update_attributes(:score => nil, :end_at => nil, :status => nil, :commit_status => 0,
:objective_score => 0.0, :subjective_score => -1.0)
@ -976,8 +970,13 @@ class ExercisesController < ApplicationController
def start_answer
ActiveRecord::Base.transaction do
begin
@exercise_user_current = @exercise.exercise_users.exercise_commit_users(@exercise_current_user_id)&.first
if @exercise_user_current.blank?
ex_users_current = ExerciseUser.where(user_id:@exercise_current_user_id,exercise_id:@exercise.id) #不能用@exercise.exercise_users因为exercise_users删除时只是状态改变未删除
@exercise_user_current = ex_users_current&.first
if ex_users_current.exists?
if @exercise_user_current.start_at.blank?
@exercise_user_current.update_attribute("start_at",Time.now)
end
else
if @user_course_identity > Course::ASSISTANT_PROFESSOR #当为老师的时候不创建exercise_user表理论上老师是不能进入答题的
exercise_user_params = {
:user_id => @exercise_current_user_id,
@ -987,16 +986,12 @@ class ExercisesController < ApplicationController
exercise_user_current = ExerciseUser.new(exercise_user_params)
exercise_user_current.save
end
else
if @exercise_user_current.start_at.blank?
@exercise_user_current.update_attribute("start_at",Time.now)
end
end
@t_user_exercise_status = @exercise.get_exercise_status(current_user)
@user_left_time = nil
if @user_course_identity < Course::STUDENT || (@t_user_exercise_status == 3) ||
(@exercise_user_current.present? && @exercise_user_current.commit_status == 1)
(ex_users_current.exists? && @exercise_user_current.commit_status == 1)
@user_exercise_status = 1 #当前用户为老师/试卷已截止/试卷已提交不可编辑
else
@user_left_time = get_exercise_left_time(@exercise,current_user)
@ -1016,7 +1011,7 @@ class ExercisesController < ApplicationController
:exercise_answers,
:exercise_standard_answers)
if @t_user_exercise_status == 3
if @t_user_exercise_status == Exercise::DEADLINE
get_each_student_exercise(@exercise.id,@exercise_questions,@exercise_current_user_id)
end
get_user_answer_status(@exercise_questions,@exercise_current_user_id,@exercise,@t_user_exercise_status)
@ -1047,9 +1042,9 @@ class ExercisesController < ApplicationController
end
end
@exercise_questions.each do |q|
if q.question_type == 5 #当为实训题时
if q.question_type == Exercise::PRACTICAL #当为实训题时
user_myshixun = q.shixun.myshixuns.search_myshixun_user(current_user.id)
if user_myshixun.blank? || user_myshixun.first.status != 1 #当前用户的实训是否做完
if user_myshixun.blank? || user_myshixun.first.status != Exercise::UNPUBLISHED #当前用户的实训是否做完
@shixun_undo += 1
end
else
@ -1159,7 +1154,7 @@ class ExercisesController < ApplicationController
#试卷的答题列表页的显示用户
if @user_course_identity < Course::STUDENT #当前为老师,而且老师只能查看自己班级的/课堂的试卷
@exercise_current_user_status = 0
unless @exercise_status == 1
unless @exercise_status == Exercise::UNPUBLISHED
ex_common_ids = @exercise.common_published_ids(current_user.id)
@exercise_course_groups = @course.get_ex_published_course(ex_common_ids)
@exercise_users_list = @exercise.all_exercise_users(current_user.id) #当前老师所在班级的全部学生
@ -1172,7 +1167,7 @@ class ExercisesController < ApplicationController
exercise_current_user = @exercise_all_users.exercise_commit_users(current_user.id)
if exercise_current_user.exists? #表示为课堂学生或已回答的
@exercise_current_user_status = 1
if @exercise.score_open && @exercise_status == 3 #勾选了成绩公开且试卷已截止的
if @exercise.score_open && @exercise_status == Exercise::DEADLINE #勾选了成绩公开且试卷已截止的
all_user_ids = @exercise_all_users.pluck(:user_id)
all_user_ids.delete(current_user.id) #删除了当前用户的ID
@exercise_users_list = @exercise_all_users.exercise_commit_users(all_user_ids).distinct
@ -1464,32 +1459,32 @@ class ExercisesController < ApplicationController
@exercise_ques_scores = exercise_questions.pluck(:question_score).sum
#单选题的数量及分数
exercise_single_ques = exercise_questions.find_by_custom("question_type",0)
exercise_single_ques = exercise_questions.find_by_custom("question_type",Exercise::SINGLE)
@exercise_single_ques_count = exercise_single_ques.size
@exercise_single_ques_scores = exercise_single_ques.pluck(:question_score).sum
#多选题的数量及分数
exercise_double_ques = exercise_questions.find_by_custom("question_type",1)
exercise_double_ques = exercise_questions.find_by_custom("question_type",Exercise::MULTIPLE)
@exercise_double_ques_count = exercise_double_ques.size
@exercise_double_ques_scores = exercise_double_ques.pluck(:question_score).sum
# 判断题数量及分数
exercise_ques_judge = exercise_questions.find_by_custom("question_type",2)
exercise_ques_judge = exercise_questions.find_by_custom("question_type",Exercise::JUDGMENT)
@exercise_ques_judge_count = exercise_ques_judge.size
@exercise_ques_judge_scores = exercise_ques_judge.pluck(:question_score).sum
#填空题数量及分数
exercise_ques_null = exercise_questions.find_by_custom("question_type",3)
exercise_ques_null = exercise_questions.find_by_custom("question_type",Exercise::COMPLETION)
@exercise_ques_null_count = exercise_ques_null.size
@exercise_ques_null_scores = exercise_ques_null.pluck(:question_score).sum
#简答题数量及分数
exercise_ques_main = exercise_questions.find_by_custom("question_type",4)
exercise_ques_main = exercise_questions.find_by_custom("question_type",Exercise::SUBJECTIVE)
@exercise_ques_main_count = exercise_ques_main.size
@exercise_ques_main_scores = exercise_ques_main.pluck(:question_score).sum
#实训题数量及分数
exercise_ques_shixun = exercise_questions.find_by_custom("question_type",5)
exercise_ques_shixun = exercise_questions.find_by_custom("question_type",Exercise::PRACTICAL)
@exercise_ques_shixun_count = exercise_ques_shixun.size
@exercise_ques_shixun_scores = exercise_ques_shixun.pluck(:question_score).sum
@ -1572,7 +1567,7 @@ class ExercisesController < ApplicationController
## 判断开始答题页面的用户权限
def check_user_on_answer
if @user_course_identity == Course::STUDENT && @exercise.get_exercise_status(current_user) == 1 #试卷未发布,且当前用户不为老师/管理员
if @user_course_identity == Course::STUDENT && @exercise.get_exercise_status(current_user) == Exercise::UNPUBLISHED #试卷未发布,且当前用户不为老师/管理员
normal_status(-1, "未发布试卷!")
elsif @user_course_identity > Course::STUDENT && (!@exercise.is_public || (@exercise.is_public && !@exercise.unified_setting)) ##不为课堂成员,且试卷不为公开的,或试卷公开,但不是统一设置的
normal_status(-1, "试卷暂未公开!")
@ -1589,7 +1584,7 @@ class ExercisesController < ApplicationController
#打回重做时的初步判断
def check_exercise_status
@exercise_users = @exercise.all_exercise_users(current_user.id).commit_exercise_by_status(1) #当前教师所在分班的全部已提交的学生数
if @exercise.get_exercise_status(current_user) != 2
if @exercise.get_exercise_status(current_user) != Exercise::PUBLISHED
normal_status(-1,"非提交中的试卷不允许打回重做!")
elsif @exercise_users.count < 1
normal_status(-1,"暂无人提交试卷!")

@ -503,6 +503,7 @@ class GamesController < ApplicationController
# 监测版本库HEAD是否存在不存在则取最新的HEAD
uri = "#{shixun_tomcat}/bridge/game/check"
res = uri_post uri, rep_params
uid_logger("repo_content to bridge: res is #{res}")
# res值0 表示正常;-1表示有错误-2表示代码版本库没了
if status == 0 && res && (res['code'] == -2 || res['code'] == -1)
# 删除不需要的仓库
@ -512,7 +513,7 @@ class GamesController < ApplicationController
uid_logger_error("#{e.message}")
end
# fork一个新的仓库
project_fork(@myshixun, @shixun.repo_path, current_user.login)
# project_fork(@myshixun, @shixun.repo_path, current_user.login)
end
rescue Exception => e
uid_logger_error(e.message)

@ -96,6 +96,10 @@ class MyshixunsController < ApplicationController
status = jsonTestDetails['status']
game_id = jsonTestDetails['buildID']
sec_key = jsonTestDetails['sec_key']
res_usage = jsonTestDetails['resUsage']
ts_time = res_usage['test_set_time_1']
logger.info("training_task_status start#1**#{game_id}**** #{Time.now.strftime("%Y-%m-%d %H:%M:%S.%L")}")
resubmit = jsonTestDetails['resubmit']
outPut = tran_base64_decode64(jsonTestDetails['outPut'])
@ -191,8 +195,8 @@ class MyshixunsController < ApplicationController
test_cases_time = format("%.3f", (Time.now.to_f - t1.to_f)).to_f
if record.present?
consume_time = format("%.3f", (Time.now - record.created_at)).to_f
record.update_attributes!(:consume_time => consume_time, :git_pull => timeCost['pull'] ,
:create_pod => timeCost['createPod'], :pod_execute => timeCost['execute'], :test_cases => test_cases_time,
record.update_attributes!(:consume_time => consume_time, :git_pull => timeCost['pull'] , :create_pod => timeCost['createPod'],
:pod_execute => timeCost['execute'], :test_cases => test_cases_time, :ts_time => ts_time,
:brige => timeCost['evaluateAllTime'], :return_back => return_back_time)
end
uid_logger("training_task_status start#4**#{game_id}**** #{Time.now.strftime("%Y-%m-%d %H:%M:%S.%L")}")

@ -247,7 +247,7 @@ class PollsController < ApplicationController
ActiveRecord::Base.transaction do
begin
check_ids = Poll.where(id: params[:check_ids])
ex_end_time = params[:end_time] || Time.at(((1.month.since.to_i)/3600.0).ceil * 3600)
ex_end_time = params[:end_time].blank? ? Time.at(((1.month.since.to_i)/3600.0).ceil * 3600) : params[:end_time].to_time
check_ids.each do |poll|
if poll.unified_setting
pl_status = poll.polls_status #则为试卷的状态
@ -263,7 +263,6 @@ class PollsController < ApplicationController
poll_unified = true
e_time = ex_end_time
else
e_time = poll.poll_group_settings.end_time_present.map(&:end_time).max
poll_unified = false
g_course.each do |i|
poll_group_setting = poll.poll_group_settings.find_in_poll_group("course_group_id",i).first #根据课堂分班的id寻找问卷所在的班级
@ -281,7 +280,8 @@ class PollsController < ApplicationController
new_poll_group.save
end
end
group_ids = params[:group_ids]
e_time = poll.poll_group_settings.end_time_present.map(&:end_time).max
# group_ids = params[:group_ids]
end
else
poll.poll_group_settings.destroy_all
@ -300,7 +300,7 @@ class PollsController < ApplicationController
if poll.course_acts.size == 0
poll.course_acts << CourseActivity.new(:user_id => poll.user_id,:course_id => poll.course_id)
end
PollPublishNotifyJob.perform_later(poll.id, group_ids)
PollPublishNotifyJob.perform_later(poll.id, g_course)
end
end
normal_status(0, "问卷发布成功!")
@ -840,7 +840,7 @@ class PollsController < ApplicationController
def start_answer
ActiveRecord::Base.transaction do
begin
poll_user_current = @poll.poll_users.find_by_group_ids(@poll_current_user_id).first #查找当前用户是否有过答题
poll_user_current = PollUser.where(user_id:@poll_current_user_id,poll_id:@poll.id)&.first #查找当前用户是否有过答题
@poll_status = @poll.get_poll_status(current_user)
if poll_user_current.blank?
if @user_course_identity > Course::ASSISTANT_PROFESSOR #当为老师的时候不创建poll_user表理论上老师是不能进入答题的

@ -1,3 +1,11 @@
# 字段说明:
# consume_time总耗时包括前端发出请求到最后前端显示效果
# git_pull中间层pull代码耗时
# create_pod创建pod耗时
# pod_executepod执行时间耗时也就代码执行耗时是各个测试集的总耗时
# test_casesoutpus表中存储及处理测试集的时间耗时
# brige中间层总耗时
# return_back回调耗时从中间层发送请求到educoder所耗时间
class EvaluateRecord < ApplicationRecord
default_scope { order("evaluate_records.id desc") }
belongs_to :game

@ -1,3 +1,15 @@
# 字段说明:
# code-1表示评测未通过0表示评测成功实质是status的值
# mes
# out_put
# test_set_position: 测试集序号(排序)
# actual_output
# result:
# is_public测试集是否是公开
# query_index评测次数
# compile_success:
# text_scor:
# sec_key每次评测的唯一标识
class Output < ApplicationRecord
belongs_to :game
end

@ -19,7 +19,7 @@ if @type == "image"
end
elsif @type == "html"
json.iframe_src html_show_users_path(:path => "#{@user_path}/#{@user_picture[0]}")
json.iframe_src File.read("#{@user_path}/#{@user_picture[0]}")&.html_safe
elsif @type == "txt"
json.contents @contents.html_safe
elsif @type =="qrcode"

@ -0,0 +1,5 @@
class AddTsTimeToOutputs < ActiveRecord::Migration[5.2]
def change
add_column :outputs, :ts_time, :float
end
end

@ -0,0 +1,5 @@
class AddMaxMemToEvaluateRecords < ActiveRecord::Migration[5.2]
def change
add_column :evaluate_records, :max_mem, :float
end
end
Loading…
Cancel
Save