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.
pgfqe6ch8/app/models/work.rb

72 lines
2.4 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.

class Work < ActiveRecord::Base
# work_status 0未发布/挂起 1提交中 2提交截止 3启动在线评审 4评审结束
belongs_to :user
belongs_to :contest
attr_accessible :description, :end_time, :is_delete, :is_open, :name, :publish_time, :score_open, :work_status, :work_type, :contest_id, :user_id
include ApplicationHelper
has_one :work_detail_group, :dependent => :destroy
has_one :work_detail_manual, :dependent => :destroy
has_many :contestant_work_projects, :dependent => :destroy
has_many :contestant_works, :dependent => :destroy, :conditions => "is_delete != 1"
has_many :journals_for_messages, :as => :jour, :dependent => :destroy
has_many :praise_tread, as: :praise_tread_object, dependent: :destroy
has_one :praise_tread_cache, as: :object, dependent: :destroy
# 竞赛动态
has_many :contest_acts, :class_name => 'ContestActivity',:as =>:contest_act ,:dependent => :destroy
# 竞赛消息
has_many :contest_messages, :class_name =>'ContestMessage', :as => :contest_message, :dependent => :destroy
acts_as_attachable
after_create :act_as_contest_message
after_update :update_activity
after_save :act_as_contest_activity
#after_destroy :delete_kindeditor_assets
def is_group_work?
self.work_type == 3 && self.work_detail_group
end
###添加回复
def self.add_work_jour(user, notes, id, root_id, options = {})
homework = Work.find(id)
if options.count == 0
jfm = homework.journals_for_messages.build(:user_id => user.id, :notes => notes, :reply_id => 0, :root_id => root_id)
else
jfm = homework.journals_for_messages.build(options)
end
jfm.save
jfm
end
def act_as_contest_activity
if self.contest
if self.work_status == 0
self.contest_acts.destroy_all
else
if self.contest_acts.size == 0
self.contest_acts << ContestActivity.new(:user_id => self.user_id,:contest_id => self.contest_id)
end
end
end
end
#动态的更新
def update_activity
update_contest_activity(self.class, self.id)
update_user_activity(self.class, self.id)
end
def act_as_contest_message
if self.contest
if self.work_status == 0
self.contest_messages.destroy_all
else
self.contest.contestants.each do |m|
self.contest_messages << ContestMessage.new(:user_id => m.student_id, :contest_id => self.contest_id, :viewed => false)
end
end
end
end
end