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

6 years ago
# 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
6 years ago
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?
6 years ago
0
elsif sgt.is_accepting.count.zero?
2
6 years ago
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