You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
educoder/app/models/graduation_topic.rb

73 lines
1.9 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 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