summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRémy Coutable <remy@rymai.me>2016-06-15 17:35:37 +0000
committerRémy Coutable <remy@rymai.me>2016-06-15 17:35:37 +0000
commit32a5ff70d771e7bff4e5c7b42fe95a966fa47a96 (patch)
tree61020f184356de6f2f62fbd32d939299ee46220f
parentaf493ccf3658c9f8b1266a880eb1798fe30cb324 (diff)
parent8a9164bf04fe20bfee9ea7923c655f4600e88c7f (diff)
downloadgitlab-ce-32a5ff70d771e7bff4e5c7b42fe95a966fa47a96.tar.gz
Merge branch 'project-services-inverse-of' into 'master'
Set inverse_of for Project/Services relation ## What does this MR do? This MR adds the `inverse_of:` option to two associations to reduce the number of queries when running code such as ` project.gitlab_issue_tracker_service.project`. ## Are there points in the code the reviewer needs to double check? No. ## Why was this MR needed? In !4410 it was revealed code such as the above is used and would run SQL queries when the root object (usually a Project) was already present. By using `inverse_of` Rails can just re-use those Project instances. ## What are the relevant issue numbers? None. ## Does this MR meet the acceptance criteria? - [x] [CHANGELOG](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/CHANGELOG) entry added - [x] ~~[Documentation created/updated](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/doc/development/doc_styleguide.md)~~ - [x] ~~API support added~~ - [x] Tests - [x] ~~Added for this feature/bug~~ - [x] All builds are passing - [x] Conform by the [style guides](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/CONTRIBUTING.md#style-guides) - [x] Branch has no merge conflicts with `master` (if you do - rebase it please) - [x] [Squashed related commits together](https://git-scm.com/book/en/Git-Tools-Rewriting-History#Squashing-Commits) See merge request !4674
-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 bb5bde9b08b..b767996bc82 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -99,6 +99,7 @@ v 8.9.0 (unreleased)
- Remove tanuki logo from side navigation; center on top nav
- Include user relationships when retrieving award_emoji
- Various associations are now eager loaded when parsing issue references to reduce the number of queries executed
+ - 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 fdbc84474ed..0bb815e64e7 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? }