diff --git a/app/jobs/create_student_work_job.rb b/app/jobs/create_student_work_job.rb new file mode 100644 index 000000000..1fd9a9b00 --- /dev/null +++ b/app/jobs/create_student_work_job.rb @@ -0,0 +1,21 @@ +class CreateStudentWorkJob < ApplicationJob + queue_as :default + + def perform(homework_id) + homework = HomeworkCommon.find_by(id: homework_id) + course = homework&.course + return if homework.blank? || course.blank? + + attrs = %i[homework_common_id user_id created_at updated_at] + + same_attrs = {homework_common_id: homework.id} + + StudentWork.bulk_insert(*attrs) do |worker| + student_ids = course.students.pluck(:user_id) + + student_ids.each do |user_id| + worker.add same_attrs.merge(user_id: user_id) + end + end + end +end diff --git a/app/services/homeworks_service.rb b/app/services/homeworks_service.rb index 78be3b8f9..64aec92c6 100644 --- a/app/services/homeworks_service.rb +++ b/app/services/homeworks_service.rb @@ -15,7 +15,8 @@ class HomeworksService homework_detail_manual.save! if homework_detail_manual HomeworkCommonsShixun.create!(homework_common_id: homework.id, shixun_id: shixun.id) HomeworksService.new.create_shixun_homework_cha_setting(homework, shixun) - HomeworksService.new.create_works_list(homework, course) + CreateStudentWorkJob.perform_later(homework.id) + # HomeworksService.new.create_works_list(homework, course) end homework end diff --git a/spec/jobs/create_student_work_job_spec.rb b/spec/jobs/create_student_work_job_spec.rb new file mode 100644 index 000000000..401160f80 --- /dev/null +++ b/spec/jobs/create_student_work_job_spec.rb @@ -0,0 +1,5 @@ +require 'rails_helper' + +RSpec.describe CreateStudentWorkJob, type: :job do + pending "add some examples to (or delete) #{__FILE__}" +end