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/db/migrate/20191213101853_migrate_stud...

26 lines
1.3 KiB

class MigrateStudentWorkCompeleteStatus < ActiveRecord::Migration[5.2]
def change
student_works = StudentWork.where("myshixun_id is not null and myshixun_id != 0")
student_works.includes(homework_common: :homework_challenge_settings, myshixun: :games).find_each do |work|
5 years ago
if work.myshixun && work.homework_common
myshixun = work.myshixun
homework= work.homework_common
5 years ago
setting_time = homework.homework_group_setting(myshixun.user_id)
homework_end_or_late_time = homework.allow_late ? homework.late_time : setting_time.end_time
challenge_ids = homework.homework_challenge_settings.pluck(:challenge_id)
games = myshixun.games.select{ |game| challenge_ids.include?(game.challenge_id) }
myshixun_endtime = games.select{|game| game.status == 2}.size == games.size ? games.map(&:end_time).max : nil
if work.work_status != 0 && homework_end_or_late_time.present?
if myshixun_endtime.present? && myshixun_endtime <= homework_end_or_late_time
# 2是按时通关 3是迟交通关
compelete_status = setting_time.end_time.present? && myshixun_endtime < setting_time.end_time ? 2 : 3
else
compelete_status = 1 # 未通关
end
work.update_column("compelete_status", compelete_status)
end
end
end
end
end