From 9a1a51e1eeecfe76d4dc27c491bc5e7a30504fb5 Mon Sep 17 00:00:00 2001 From: cxt <853663049@qq.com> Date: Thu, 5 Mar 2020 20:47:23 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=87=E6=8D=A2=E8=BA=AB=E4=BB=BD=E6=97=B6?= =?UTF-8?q?=E8=AE=B0=E5=BD=95=E5=88=86=E7=8F=ADid?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/courses_controller.rb | 6 +++++- app/models/course.rb | 2 ++ app/models/teacher_group_record.rb | 4 ++++ app/models/user.rb | 2 ++ .../20200305123517_create_teacher_group_records.rb | 13 +++++++++++++ spec/models/teacher_group_record_spec.rb | 5 +++++ 6 files changed, 31 insertions(+), 1 deletion(-) create mode 100644 app/models/teacher_group_record.rb create mode 100644 db/migrate/20200305123517_create_teacher_group_records.rb create mode 100644 spec/models/teacher_group_record_spec.rb diff --git a/app/controllers/courses_controller.rb b/app/controllers/courses_controller.rb index ef6a30d35..c97be34fb 100644 --- a/app/controllers/courses_controller.rb +++ b/app/controllers/courses_controller.rb @@ -747,6 +747,7 @@ class CoursesController < ApplicationController ActiveRecord::Base.transaction do course_student.destroy! course_teacher.update!(is_active: 1) + TeacherCourseGroup.create!(user_id: current_user.id, course_id: @course.id, group_id: course_student.course_group_id) CourseDeleteStudentDeleteWorksJob.perform_later(@course.id, [current_user.id]) end normal_status(0, "切换成功") @@ -766,6 +767,7 @@ class CoursesController < ApplicationController ActiveRecord::Base.transaction do course_student.destroy! course_teacher.update!(is_active: 1) + TeacherCourseGroup.create!(user_id: current_user.id, course_id: @course.id, group_id: course_student.course_group_id) CourseDeleteStudentDeleteWorksJob.perform_later(@course.id, [current_user.id]) end normal_status(0, "切换成功") @@ -788,7 +790,9 @@ class CoursesController < ApplicationController course_student.update_attributes!(is_active: 1) else # 学生身份不存在则创建 - CourseMember.create!(user_id: current_user.id, role: 4, course_id: @course.id) + course_group_id = @course.teacher_course_groups.find_by(user_id: current_user.id)&.group_id.to_i + course_group_id = @course.course_groups.find_by(id: course_group_id)&.id.to_i + CourseMember.create!(user_id: current_user.id, role: 4, course_id: @course.id, course_group_id: course_group_id) CourseAddStudentCreateWorksJob.perform_later(@course.id, [current_user.id]) end normal_status(0, "切换成功") diff --git a/app/models/course.rb b/app/models/course.rb index 5ae7f9484..7e795ff04 100644 --- a/app/models/course.rb +++ b/app/models/course.rb @@ -95,6 +95,8 @@ class Course < ApplicationRecord has_many :course_attendance_groups has_many :course_member_attendances + has_many :teacher_course_groups, dependent: :destroy + validate :validate_sensitive_string scope :hidden, ->(is_hidden = true) { where(is_hidden: is_hidden) } diff --git a/app/models/teacher_group_record.rb b/app/models/teacher_group_record.rb new file mode 100644 index 000000000..2dc9a392d --- /dev/null +++ b/app/models/teacher_group_record.rb @@ -0,0 +1,4 @@ +class TeacherGroupRecord < ApplicationRecord + belongs_to :user + belongs_to :course +end diff --git a/app/models/user.rb b/app/models/user.rb index b3a1da84d..bdd7fc42a 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -160,6 +160,8 @@ class User < ApplicationRecord has_many :examination_banks, dependent: :destroy has_many :examination_intelligent_settings, dependent: :destroy + has_many :teacher_course_groups, dependent: :destroy + # Groups and active users scope :active, lambda { where(status: STATUS_ACTIVE) } diff --git a/db/migrate/20200305123517_create_teacher_group_records.rb b/db/migrate/20200305123517_create_teacher_group_records.rb new file mode 100644 index 000000000..68ec11a2d --- /dev/null +++ b/db/migrate/20200305123517_create_teacher_group_records.rb @@ -0,0 +1,13 @@ +class CreateTeacherGroupRecords < ActiveRecord::Migration[5.2] + def change + create_table :teacher_group_records do |t| + t.references :user + t.references :course + t.integer :group_id + + t.timestamps + end + + add_index :teacher_group_records, [:user_id, :course_id], unique: true + end +end diff --git a/spec/models/teacher_group_record_spec.rb b/spec/models/teacher_group_record_spec.rb new file mode 100644 index 000000000..bf200329d --- /dev/null +++ b/spec/models/teacher_group_record_spec.rb @@ -0,0 +1,5 @@ +require 'rails_helper' + +RSpec.describe TeacherGroupRecord, type: :model do + pending "add some examples to (or delete) #{__FILE__}" +end