From db437eb191b3f050973b155e6633b1107e4a35ed Mon Sep 17 00:00:00 2001 From: "sylor_huang@126.com" Date: Fri, 3 Apr 2020 17:55:13 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=A1=B9=E7=9B=AE=E6=88=90?= =?UTF-8?q?=E5=91=98=E5=8F=AF=E4=BB=A5=E9=A1=B9=E7=9B=AE=E7=9A=84=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/models/concerns/publicable.rb | 1 + app/models/project.rb | 7 +++++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/app/models/concerns/publicable.rb b/app/models/concerns/publicable.rb index 6a06d27db..1186233bd 100644 --- a/app/models/concerns/publicable.rb +++ b/app/models/concerns/publicable.rb @@ -3,5 +3,6 @@ module Publicable included do scope :visible, -> { where(is_public: true) } + scope :is_private, -> {where(is_public: false)} end end diff --git a/app/models/project.rb b/app/models/project.rb index cb8ba7880..a771870a6 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -100,8 +100,11 @@ class Project < ApplicationRecord end def self.list_user_projects(user_id) - user_not_show = Project.joins(:members).where("projects.is_public = ? and projects.user_id != ? and members.user_id != ?", false, user_id,user_id).pluck(:id).uniq - Project.where.not(id: user_not_show) + projects = Project.is_private.select(:id) + user_not_show_1 = projects.where(user_id: user_id).pluck(:id).uniq + + user_show_2 = projects.joins(:members).where("members.user_id = ?", user_id).pluck(:id).uniq + Project.where.not(id: (user_not_show_1 - user_show_2.uniq)) end end