From 724c894e325c14132efa46364691350125f4d72c Mon Sep 17 00:00:00 2001 From: "sylor_huang@126.com" Date: Wed, 22 Apr 2020 13:37:15 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=90=9C=E7=B4=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/projects_controller.rb | 6 ++++-- app/models/concerns/matchable.rb | 8 +------- 2 files changed, 5 insertions(+), 9 deletions(-) diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb index 7727ebe04..ab8426922 100644 --- a/app/controllers/projects_controller.rb +++ b/app/controllers/projects_controller.rb @@ -9,8 +9,10 @@ class ProjectsController < ApplicationController is_admin = current_user && current_user&.admin? scope = Projects::ListQuery.call(params.merge(is_admin: is_admin, user_id: current_user.try(:id))) - @total_count = scope.size - @projects = paginate(scope) + + scope_ids = scope.pluck(:id) + @total_count = scope_ids.size + @projects = paginate(Project.where(id: scope_ids)) end def create diff --git a/app/models/concerns/matchable.rb b/app/models/concerns/matchable.rb index a9427f2bb..13fcff80d 100644 --- a/app/models/concerns/matchable.rb +++ b/app/models/concerns/matchable.rb @@ -2,15 +2,9 @@ module Matchable extend ActiveSupport::Concern included do - # scope :like, lambda { |keywords| - # joins(:repository).where(%w[ projects.name projects.identifier repositories.identifier ].map { |f| "LOWER(#{f}) LIKE :q" }.join(' OR '), q: "%#{keywords.split(" ").join('|')}%") unless keywords.blank? - # } scope :like, lambda { |keywords| - joins(:repository).where(%w[ projects.name projects.identifier repositories.identifier ].map { |f| "LOWER(#{f}) LIKE :q" }.join(' OR '), q: "%#{keywords.downcase}%") unless keywords.blank? + joins(:repository).where(%w[ projects.name projects.identifier repositories.identifier ].map { |f| "LOWER(#{f}) LIKE :q" }.join(' OR '), q: "%#{keywords.split(" ").join('|')}%") unless keywords.blank? } - # scope :like, lambda { |keywords| - # joins(:repository).where("LOWER(projects.name) like ? or LOWER(projects.identifier) like ? or LOWER(repositories.identifier) like ?", "%#{keywords.downcase}","%#{keywords.downcase}","%#{keywords.downcase}") unless keywords.blank? - # } scope :with_project_category, ->(category_id) { where(project_category_id: category_id) unless category_id.blank? } scope :with_project_language, ->(language_id) { where(project_language_id: language_id) unless language_id.blank? } scope :with_project_type, ->(project_type) { where(project_type: project_type) if Project.project_types.include?(project_type) }