@ -72,7 +72,7 @@ class Course < ActiveRecord::Base
before_save :self_validate
# 公开课程变成私有课程,所有资源都变成私有
after_update :update_files_public , :update_course_ealasticsearch_index , :update_activity
after_create :create_board_sync , :act_as_course_activity , :act_as_course_message , :create_course_ealasticsearch_index
after_create :create_board_sync , :act_as_course_activity , :act_as_course_message , :create_course_ealasticsearch_index , :add_course_ead
before_destroy :delete_all_members , :delete_course_ealasticsearch_index
safe_attributes 'extra' ,
@ -145,6 +145,26 @@ class Course < ActiveRecord::Base
)
end
def self . e_search ( query )
__elasticsearch__ . search (
{
query : {
multi_match : {
query : query ,
type : " most_fields " ,
operator : " or " ,
fields : [ 'name' , 'description^0.5' ]
}
} ,
sort : {
_score : { order : " desc " } ,
updated_at : { order : " desc " }
}
}
)
end
def visible? ( user = User . current )
user . allowed_to? ( :view_course , self )
end
@ -385,6 +405,14 @@ class Course < ActiveRecord::Base
self . course_messages << CourseMessage . new ( :user_id = > self . tea_id , :course_id = > self . id , :viewed = > false )
end
# 发布新课导语
def add_course_ead
name = Redmine :: Configuration [ 'course_message_lead_subject' ]
content = Redmine :: Configuration [ 'course_message_lead_content' ]
# message的status状态为0为正常, 为1表示创建课程时发送的message
Message . create ( :subject = > name , :content = > content , :board_id = > self . boards . first . id , :author_id = > self . tea_id , :sticky = > true , :status = > true )
end
#项目与课程分离后,很多课程的名称等信息为空,这些数据信息存储在项目表中!!就是数据兼容的问题
#def name
# read_attribute('name') || Project.find_by_identifier(self.extra).try(:name)