@ -92,7 +104,35 @@ class Attachment < ActiveRecord::Base
" LEFT JOIN #{News.table_name} ON #{Attachment.table_name}.container_type='News' AND (#{News.table_name}.project_id in "+self.public_project_id+" OR #{News.table_name}.course_id in "+self.public_course_id+")"+
" LEFT JOIN #{HomeworkAttach.table_name} ON #{Attachment.table_name}.container_type='HomeworkAttach' AND #{HomeworkAttach.table_name}.bid_id in "+self.public_bid_id)
}
scope:indexable,lambda{where('is_public = 1 and ((container_type in ("Principal")) '+
'or (container_type = "Course" and container_id in( SELECT `courses`.id FROM `courses` WHERE (courses.status <> 9 AND courses.is_public = 1)) )'+
'or (container_type = "Project" and container_id in(SELECT `projects`.id FROM `projects` WHERE (projects.status <> 9 AND projects.is_public = 1) ))'+')')}#用于elastic建索引的scope
defself.search(query)
__elasticsearch__.search(
{
query:{
multi_match:{
query:query,
type:"most_fields",
operator:"or",
fields:['filename']
}
},
sort:{
_score:{order:"desc"},
downloads:{order:"desc"}
},
highlight:{
pre_tags:['<span class="c_red">'],
post_tags:['</span>'],
fields:{
filename:{}
}
}
}
)
end
# add by nwb
# 公开的项目id列表
defself.public_project_id
@ -561,4 +601,46 @@ class Attachment < ActiveRecord::Base
has_many:members,:include=>[:principal,:roles],:conditions=>"#{Principal.table_name}.type='User' AND #{Principal.table_name}.status=#{Principal::STATUS_ACTIVE}"
@ -138,8 +151,9 @@ class Project < ActiveRecord::Base