41 lines
1.6 KiB
Ruby
41 lines
1.6 KiB
Ruby
#encoding: utf-8
|
|
class StudentsForCourse < ActiveRecord::Base
|
|
attr_accessible :course_id, :student_id
|
|
|
|
belongs_to :course, :class_name => 'Course', :foreign_key => :course_id
|
|
|
|
belongs_to :student, :class_name => 'User', :foreign_key => :student_id
|
|
|
|
validates_presence_of :course_id, :student_id
|
|
validates_uniqueness_of :student_id, :scope => :course_id
|
|
|
|
after_destroy :delete_student_works
|
|
after_create :recovery_student_works, :create_student_works
|
|
|
|
#退出班级或删除学生时隐藏学生的作品
|
|
def delete_student_works
|
|
course = self.course
|
|
homework_ids = course.homework_commons.blank? ? "(-1)" : "(" + course.homework_commons.map{|hw| hw.id}.join(",") + ")"
|
|
student_works = StudentWork.where("user_id = #{self.student_id} && homework_common_id in #{homework_ids}")
|
|
student_works.update_all(:is_delete => 1)
|
|
end
|
|
|
|
#加入班级时还原作品
|
|
def recovery_student_works
|
|
course = self.course
|
|
homework_ids = course.homework_commons.blank? ? "(-1)" : "(" + course.homework_commons.map{|hw| hw.id}.join(",") + ")"
|
|
student_works = StudentWork.where("user_id = #{self.student_id} && homework_common_id in #{homework_ids}")
|
|
student_works.update_all(:is_delete => 0)
|
|
end
|
|
|
|
#加入班级时创建已发布作业的作品
|
|
def create_student_works
|
|
course = self.course
|
|
course.homework_commons.each do |hw|
|
|
if hw.homework_type != 3 && hw.student_works.where("user_id = #{self.student_id}").count == 0
|
|
hw.student_works << StudentWork.new(:user_id => self.student_id, :name => hw.name.to_s+"的作品提交", :work_status => 0)
|
|
end
|
|
end
|
|
end
|
|
end
|