|
|
|
@ -0,0 +1,31 @@
|
|
|
|
|
# 执行示例 bundle exec rake migrate_course_student_work:homework args=2933
|
|
|
|
|
desc "创建课堂学生的作业数据"
|
|
|
|
|
|
|
|
|
|
namespace :migrate_course_student_work do
|
|
|
|
|
if ENV['args']
|
|
|
|
|
course_id = ENV['args'].split(",")[0] # 对应课堂的id
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
task homework: :environment do
|
|
|
|
|
course = Course.find_by(id: course_id)
|
|
|
|
|
if course.present?
|
|
|
|
|
student_ids = course.students.pluck(:user_id)
|
|
|
|
|
|
|
|
|
|
# 如果之前存在相关作品,则更新is_delete字段
|
|
|
|
|
student_works = StudentWork.joins(:homework_common).where(user_id: student_ids, homework_commons: {course_id: course.id})
|
|
|
|
|
student_works.update_all(is_delete: 0)
|
|
|
|
|
|
|
|
|
|
attrs = %i[homework_common_id user_id created_at updated_at]
|
|
|
|
|
|
|
|
|
|
StudentWork.bulk_insert(*attrs) do |worker|
|
|
|
|
|
student_ids.each do |user_id|
|
|
|
|
|
same_attrs = {user_id: user_id}
|
|
|
|
|
course.homework_commons.where(homework_type: %i[normal group practice]).each do |homework|
|
|
|
|
|
next if StudentWork.where(user_id: user_id, homework_common_id: homework.id).any?
|
|
|
|
|
worker.add same_attrs.merge(homework_common_id: homework.id)
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|