diff --git a/app/models/project.rb b/app/models/project.rb index 65579dae3..b288c0cbd 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -165,4 +165,8 @@ class Project < ApplicationRecord Project.find_by(id: self.forked_from_project_id) end + def self.members_projects(member_user_id) + joins(:members).where(members: { user_id: member_user_id}) + end + end diff --git a/app/queries/projects/list_my_query.rb b/app/queries/projects/list_my_query.rb index 56164f751..ba521e906 100644 --- a/app/queries/projects/list_my_query.rb +++ b/app/queries/projects/list_my_query.rb @@ -17,16 +17,15 @@ class Projects::ListMyQuery < ApplicationQuery projects = Project.visible end - if params[:is_public].present? && params[:is_public] == "private" - projects = projects.is_private.joins(:members).where(members: { user_id: user.id }) - else - projects = projects.visible.joins(:members).where(members: { user_id: user.id }) + if params[:is_public].present? + projects = projects.is_private.members_projects(user.id) if params[:is_public].to_s == "private" + projects = projects.visible.members_projects(user.id) if params[:is_public].to_s == "public" end if params[:category].blank? - projects = projects.joins(:members).where(members: { user_id: user.id }) + projects = projects.members_projects(user.id) elsif params[:category].to_s == "join" - projects = projects.where.not(user_id: user.id).joins(:members).where(members: { user_id: user.id }) + projects = projects.where.not(user_id: user.id).members_projects(user.id) elsif params[:category].to_s == "manage" projects = projects.where(user_id: user.id) elsif params[:category].to_s == "watched" #我关注的