|
|
|
|
# status 0:待选中 1:待确认 2:已确认
|
|
|
|
|
class GraduationTopic < ApplicationRecord
|
|
|
|
|
belongs_to :course, counter_cache: true
|
|
|
|
|
belongs_to :user
|
|
|
|
|
has_many :student_graduation_topics, :dependent => :destroy
|
|
|
|
|
# 附件
|
|
|
|
|
#acts_as_attachable
|
|
|
|
|
has_many :attachments, as: :container, dependent: :destroy
|
|
|
|
|
# 回复
|
|
|
|
|
has_many :journals_for_messages, :as => :jour, :dependent => :destroy
|
|
|
|
|
|
|
|
|
|
# 题库
|
|
|
|
|
belongs_to :gtopic_bank, optional: true
|
|
|
|
|
|
|
|
|
|
scope :search_by_name, ->(name) { where("graduation_topics.name LIKE ?", "%#{name}%")}
|
|
|
|
|
scope :search_by_status, ->(status) {where(status: status)}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#after_create :act_as_course_activity
|
|
|
|
|
|
|
|
|
|
# 课题名称和描述字段长度限制
|
|
|
|
|
validates :name, length: { maximum: 60,
|
|
|
|
|
too_long: "60 characters is the maximum allowed" }
|
|
|
|
|
validates :description, length: { maximum: 5000,
|
|
|
|
|
too_long: "5000 characters is the maximum allowed" }
|
|
|
|
|
|
|
|
|
|
def status_name
|
|
|
|
|
case self.status
|
|
|
|
|
when 0
|
|
|
|
|
"待选中"
|
|
|
|
|
when 1
|
|
|
|
|
"待确认"
|
|
|
|
|
when 2
|
|
|
|
|
"已确认"
|
|
|
|
|
else
|
|
|
|
|
"状态错误!"
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
#课程动态公共表记录
|
|
|
|
|
def act_as_course_activity
|
|
|
|
|
if self.course
|
|
|
|
|
if self.course_acts.size == 0
|
|
|
|
|
self.course_acts << CourseActivity.new(:user_id => self.user_id, :course_id => self.course_id)
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
# 跟选题后,查询所有选题的状态
|
|
|
|
|
def student_graduation_topic_status
|
|
|
|
|
sgt = self.student_graduation_topics
|
|
|
|
|
status =
|
|
|
|
|
if sgt.where(status: [0, 1]).count.zero?
|
|
|
|
|
0
|
|
|
|
|
elsif sgt.is_accepting.count.zero?
|
|
|
|
|
2
|
|
|
|
|
else
|
|
|
|
|
1
|
|
|
|
|
end
|
|
|
|
|
return status
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def teacher
|
|
|
|
|
User.find(self.tea_id)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
# 用户选题的状态
|
|
|
|
|
def user_status(user_id)
|
|
|
|
|
self.student_graduation_topics.where(user_id: user_id).last.try(:status)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
end
|