diff options
author | Douglas Barbosa Alexandre <dbalexandre@gmail.com> | 2019-09-10 18:29:32 -0300 |
---|---|---|
committer | Douglas Barbosa Alexandre <dbalexandre@gmail.com> | 2019-09-10 18:54:36 -0300 |
commit | a38aa7e3df0f91ebaa017b29cd508958fa7b0df1 (patch) | |
tree | 35098e0d63845fc20049f40ad5bbda00416fff55 | |
parent | cfe77ce4a3494b9c1516fe7e915f76b21a68e763 (diff) | |
download | gitlab-ce-a38aa7e3df0f91ebaa017b29cd508958fa7b0df1.tar.gz |
Fix N+1s queries
-rw-r--r-- | app/controllers/projects/forks_controller.rb | 8 | ||||
-rw-r--r-- | app/models/project.rb | 1 |
2 files changed, 7 insertions, 2 deletions
diff --git a/app/controllers/projects/forks_controller.rb b/app/controllers/projects/forks_controller.rb index e11747ce0a3..1bb21857dcf 100644 --- a/app/controllers/projects/forks_controller.rb +++ b/app/controllers/projects/forks_controller.rb @@ -2,6 +2,7 @@ class Projects::ForksController < Projects::ApplicationController include ContinueParams + include RendersMemberAccess # Authorize before_action :whitelist_query_limiting, only: [:create] @@ -9,6 +10,7 @@ class Projects::ForksController < Projects::ApplicationController before_action :authorize_download_code! before_action :authenticate_user!, only: [:new, :create] + # rubocop: disable CodeReuse/ActiveRecord def index @total_forks_count = project.forks.size @public_forks_count = project.forks.public_only.size @@ -16,7 +18,10 @@ class Projects::ForksController < Projects::ApplicationController @internal_forks_count = @total_forks_count - @public_forks_count - @private_forks_count @forks = ForkProjectsFinder.new(project, params: params.merge(search: params[:filter_projects]), current_user: current_user).execute - @forks = @forks.eager_load_namespace_and_owner.inc_creator.with_route.page(params[:page]) + @forks = @forks.includes(:route, :creator, :group, namespace: [:route, :owner]) + .page(params[:page]) + + prepare_projects_for_rendering(@forks) respond_to do |format| format.html @@ -28,6 +33,7 @@ class Projects::ForksController < Projects::ApplicationController end end end + # rubocop: enable CodeReuse/ActiveRecord def new @namespaces = current_user.manageable_namespaces diff --git a/app/models/project.rb b/app/models/project.rb index 38d8c62f3bb..d948410e397 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -417,7 +417,6 @@ class Project < ApplicationRecord scope :with_merge_requests_available_for_user, ->(current_user) { with_feature_available_for_user(:merge_requests, current_user) } scope :with_merge_requests_enabled, -> { with_feature_enabled(:merge_requests) } scope :with_remote_mirrors, -> { joins(:remote_mirrors).where(remote_mirrors: { enabled: true }).distinct } - scope :inc_creator, -> { includes(:creator) } scope :with_group_runners_enabled, -> do joins(:ci_cd_settings) |