summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYorick Peterse <yorickpeterse@gmail.com>2016-06-08 18:10:46 +0200
committerYorick Peterse <yorickpeterse@gmail.com>2016-06-15 15:28:29 +0200
commitda7062f1b75d0f772fbd1f19d2c3a2dcc6acb7bf (patch)
treeaa5e2a3bb100ca6fdeb0e83f6359f5c104769104
parenta4a85c269a4f3165914915ede4a9a7642057d105 (diff)
downloadgitlab-ce-project-services-inverse-of.tar.gz
Set inverse_of for Project/Services relationproject-services-inverse-of
This ensures that code such as this don't run needless SQL queries: project.gitlab_issue_tracker_service.project This also means that if the root `project` eager loads any associations the Service object will be able to re-use those.
-rw-r--r--CHANGELOG1
-rw-r--r--app/models/project.rb2
-rw-r--r--app/models/service.rb2
3 files changed, 3 insertions, 2 deletions
diff --git a/CHANGELOG b/CHANGELOG
index 6f29b578a95..611295a4ea6 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -93,6 +93,7 @@ v 8.9.0 (unreleased)
- Hide global side navigation by default
- Remove tanuki logo from side navigation; center on top nav
- Include user relationships when retrieving award_emoji
+ - Set inverse_of for Project/Service association to reduce the number of queries
v 8.8.5 (unreleased)
- Ensure branch cleanup regardless of whether the GitHub import process succeeds
diff --git a/app/models/project.rb b/app/models/project.rb
index 0d2e612436a..04af28efd79 100644
--- a/app/models/project.rb
+++ b/app/models/project.rb
@@ -81,7 +81,7 @@ class Project < ActiveRecord::Base
has_one :jira_service, dependent: :destroy
has_one :redmine_service, dependent: :destroy
has_one :custom_issue_tracker_service, dependent: :destroy
- has_one :gitlab_issue_tracker_service, dependent: :destroy
+ has_one :gitlab_issue_tracker_service, dependent: :destroy, inverse_of: :project
has_one :external_wiki_service, dependent: :destroy
has_one :forked_project_link, dependent: :destroy, foreign_key: "forked_to_project_id"
diff --git a/app/models/service.rb b/app/models/service.rb
index bf352397509..40d39933ad8 100644
--- a/app/models/service.rb
+++ b/app/models/service.rb
@@ -18,7 +18,7 @@ class Service < ActiveRecord::Base
after_commit :reset_updated_properties
after_commit :cache_project_has_external_issue_tracker
- belongs_to :project
+ belongs_to :project, inverse_of: :services
has_one :service_hook
validates :project_id, presence: true, unless: Proc.new { |service| service.template? }