|
- class CourseActivity < ActiveRecord::Base
- attr_accessible :user_id, :course_act_id,:course_act_type,:course_id
- # 虚拟关联
- belongs_to :course_act ,:polymorphic => true
- belongs_to :course
- belongs_to :user
- has_many :user_acts, :class_name => 'UserAcivity',:as =>:act
- after_create :add_course_lead,:add_user_activity, :add_org_activity, :update_cache_add
- before_destroy :destroy_user_activity, :destroy_org_activity, :update_cache_delete
- after_destroy :update_cache_delete_ex
-
- #在个人动态里面增加当前动态
- def add_user_activity
- user_activity = UserActivity.where("act_type = '#{self.course_act_type.to_s}' and act_id = '#{self.course_act_id}'").first
- if user_activity
- user_activity.save
- else
- if self.course_act_type == 'Message' && !self.course_act.parent_id.nil?
- user_activity = UserActivity.where("act_type = 'Message' and act_id = #{self.course_act.parent.id}").first
- user_activity.created_at = self.created_at
- user_activity.save
- else
- user_activity = UserActivity.new
- user_activity.act_id = self.course_act_id
- user_activity.act_type = self.course_act_type
- user_activity.container_type = "Course"
- user_activity.container_id = self.course_id
- user_activity.user_id = self.user_id
- user_activity.save
- end
- end
- end
-
- def add_org_activity
- org_activity = OrgActivity.where("org_act_type = '#{self.course_act_type.to_s}' and org_act_id = '#{self.course_act_id}'").first
- if org_activity
- org_activity.updated_at = self.updated_at
- org_activity.save
- else
- if self.course_act_type == 'Message' && !self.course_act.parent_id.nil?
- org_activity = OrgActivity.where("org_act_type = 'Message' and org_act_id = #{self.course_act.parent.id}").first
- org_activity.created_at = self.created_at
- org_activity.updated_at = self.updated_at
- org_activity.save
- else
- OrgActivity.create(:user_id => self.user_id,
- :org_act_id => self.course_act_id,
- :org_act_type => self.course_act_type,
- :container_id => self.course_id,
- :container_type => 'Course',
- :created_at => self.created_at,
- :updated_at => self.updated_at)
- end
- end
- end
-
- def destroy_user_activity
- user_activity = UserActivity.where("act_type = '#{self.course_act_type.to_s}' and act_id = '#{self.course_act_id}'")
- user_activity.destroy_all
- end
-
- def destroy_org_activity
- org_activity = OrgActivity.where("org_act_type = '#{self.course_act_type.to_s}' and org_act_id = '#{self.course_act_id}'")
- org_activity.destroy_all
- end
-
- # 发布新课导语
- # 导语要放置在课程创建信息之后
- def add_course_lead
- # 避免空数据迁移报错问题
- if self.course_act_type == "Course" and Message.where("id=12440").any?
- lead_message = Message.find(12440)
- name = lead_message.subject
- content = lead_message.content
- # message的status状态为0为正常,为1表示创建课程时发送的message
- # author_id 默认为课程使者创建
- message = Message.create(:subject => name, :content => content, :board_id => self.course.boards.first.id, :author_id => 1 , :sticky => true, :status => true )
- # 更新的目的是为了排序,因为该条动态的时间可能与课程创建的动态创建时间一致
- message.course_acts.first.update_attribute(:updated_at, message.course_acts.first.updated_at + 1) if message.course_acts.first
- end
- end
-
- #更新班级的动态缓存
- def update_cache_add
- CourseCache.update_course_acts_nums_cache(self.course.id,self,0)
- CourseCache.update_course_act_updated_at_cache(self.course.id)
- end
-
- #删除前更新
- def update_cache_delete
- CourseCache.update_course_acts_nums_cache(self.course.id,self,1)
- CourseCache.update_course_act_updated_at_cache(self.course.id)
- end
-
- #删除后更新
- def update_cache_delete_ex
- CourseCache.update_course_act_updated_at_cache(self.course.id)
- end
-
- end
|