From b30510bf3dad2b6d65cb3b4747294eb95c772f19 Mon Sep 17 00:00:00 2001 From: "sylor_huang@126.com" Date: Thu, 26 Mar 2020 10:19:04 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=88=86=E7=B1=BB=E6=95=B0?= =?UTF-8?q?=E9=87=8F=E6=98=BE=E7=A4=BAbug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/project_categories_controller.rb | 2 +- app/controllers/projects_controller.rb | 3 ++- app/models/project.rb | 5 +++++ app/queries/projects/list_query.rb | 2 +- 4 files changed, 9 insertions(+), 3 deletions(-) diff --git a/app/controllers/project_categories_controller.rb b/app/controllers/project_categories_controller.rb index bdcec0883..8649db38f 100644 --- a/app/controllers/project_categories_controller.rb +++ b/app/controllers/project_categories_controller.rb @@ -8,7 +8,7 @@ class ProjectCategoriesController < ApplicationController if is_admin projects = Project.all elsif current_user&.logged? - projects = Project.joins(:members).where.not("projects.is_public = ? and (projects.user_id != ? or members.user_id != ?)", false, current_user.id,current_user.id ).distinct + projects = Project.list_user_projects(current_user.id) else projects = Project.visible end diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb index f53a89069..abb97109c 100644 --- a/app/controllers/projects_controller.rb +++ b/app/controllers/projects_controller.rb @@ -42,7 +42,8 @@ class ProjectsController < ApplicationController if is_admin projects = Project.all elsif current_user&.logged? - projects = Project.joins(:members).where.not("projects.is_public = ? and (projects.user_id != ? or members.user_id != ?)", false, current_user.id,current_user.id ).distinct + + projects = Project.list_user_projects(current_user.id) else projects = Project.visible end diff --git a/app/models/project.rb b/app/models/project.rb index c600f8648..f3bf61817 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -101,4 +101,9 @@ class Project < ApplicationRecord str end + def self.list_user_projects(user_id) + user_not_show = Project.joins(:members).where("projects.is_public = ? and (projects.user_id != ? or members.user_id != ?)", false, user_id,user_id).pluck(:id).uniq + Project.where.not(id: user_not_show) + end + end diff --git a/app/queries/projects/list_query.rb b/app/queries/projects/list_query.rb index b5facb3a3..8bbbc5d90 100644 --- a/app/queries/projects/list_query.rb +++ b/app/queries/projects/list_query.rb @@ -13,7 +13,7 @@ class Projects::ListQuery < ApplicationQuery if params[:is_admin] projects = Project.all elsif params[:user_id].to_i != 2 - projects = Project.joins(:members).where.not("projects.is_public = ? and (projects.user_id != ? or members.user_id != ?)", false, params[:user_id].to_i,params[:user_id].to_i ).distinct + projects = Project.list_user_projects(params[:user_id]) else projects = Project.visible end