实训搜索支持按照tag名称搜索

dev_local
daiao 6 years ago
parent a7d9d45584
commit 383bc27327

@ -396,12 +396,13 @@ class ShixunsController < ApplicationController
:use_scope, :identifier, :image_text]).where(:id => shixun_id, :hidden => 0, :trainee => diff, :status => status).includes(:tag_repertoires, :challenges)
if search.present?
search_users_id = User.select([:id]).where("concat(lastname, firstname) like '%#{search}%'")
search_users_id = search_users_id.blank? ? "(-1)" : "(" + search_users_id.map{|sc| sc.id}.join(',') + ")"
search_shixun_ids = Challenge.where("subject like '%#{search}%'").pluck(:shixun_id).uniq
search_shixun_ids = search_shixun_ids.blank? ? "(-1)" : "(" + search_shixun_ids.join(",") + ")"
fuzzy_searchs = search.split(" ").join("%")
@shixuns = @shixuns.where("name like ? or user_id in #{search_users_id} or id in #{search_shixun_ids}", "%#{fuzzy_searchs}%")
search_shixun_ids = Shixun.joins(:users, challenges: :challenge_tags).
where("challenge_tags.name like '%#{search}%'
or subject like '%#{search}%'
or challenges.subject like '%#{search}%'
or concat(lastname, firstname) like '%#{search}%'
or shixuns.name like '%#{search}%'").pluck(:id)
@shixuns = @shixuns.where(id: search_shixun_ids)
end
if hidden_learn.present?

Loading…
Cancel
Save