# 执行示例 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