summaryrefslogtreecommitdiff
path: root/app/models
diff options
context:
space:
mode:
authorDouwe Maan <douwe@selenight.nl>2016-08-18 18:27:22 -0500
committerDouwe Maan <douwe@selenight.nl>2016-08-18 19:08:59 -0500
commit6a355d451eaca2fc10f5fcf31de13b05fa795b9b (patch)
treef758173d2911fd6ed34698068b90d59e34de5b8c /app/models
parentac89bb0fad1d5820c4defd51cb6ab0626d1fb6ba (diff)
downloadgitlab-ce-6a355d451eaca2fc10f5fcf31de13b05fa795b9b.tar.gz
Improve performance of MR show page
Diffstat (limited to 'app/models')
-rw-r--r--app/models/diff_note.rb2
-rw-r--r--app/models/merge_request.rb2
-rw-r--r--app/models/note.rb5
3 files changed, 5 insertions, 4 deletions
diff --git a/app/models/diff_note.rb b/app/models/diff_note.rb
index 1ca37c4a5bf..f56c3d74ae3 100644
--- a/app/models/diff_note.rb
+++ b/app/models/diff_note.rb
@@ -4,8 +4,6 @@ class DiffNote < Note
serialize :original_position, Gitlab::Diff::Position
serialize :position, Gitlab::Diff::Position
- belongs_to :resolved_by, class_name: "User"
-
validates :original_position, presence: true
validates :position, presence: true
validates :diff_line, presence: true
diff --git a/app/models/merge_request.rb b/app/models/merge_request.rb
index 39e4d182bb7..5330a07ee35 100644
--- a/app/models/merge_request.rb
+++ b/app/models/merge_request.rb
@@ -420,7 +420,7 @@ class MergeRequest < ActiveRecord::Base
def discussions
@discussions ||= self.mr_and_commit_notes.
- inc_author_project_award_emoji.
+ inc_relations_for_view.
fresh.
discussions
end
diff --git a/app/models/note.rb b/app/models/note.rb
index 79f7a247fba..3bbf5db0b70 100644
--- a/app/models/note.rb
+++ b/app/models/note.rb
@@ -25,6 +25,9 @@ class Note < ActiveRecord::Base
belongs_to :author, class_name: "User"
belongs_to :updated_by, class_name: "User"
+ # Only used by DiffNote, but defined here so that it can be used in `Note.includes`
+ belongs_to :resolved_by, class_name: "User"
+
has_many :todos, dependent: :destroy
has_many :events, as: :target, dependent: :destroy
@@ -59,7 +62,7 @@ class Note < ActiveRecord::Base
scope :fresh, ->{ order(created_at: :asc, id: :asc) }
scope :inc_author_project, ->{ includes(:project, :author) }
scope :inc_author, ->{ includes(:author) }
- scope :inc_author_project_award_emoji, ->{ includes(:project, :author, :award_emoji) }
+ scope :inc_relations_for_view, ->{ includes(:project, :author, :updated_by, :resolved_by, :award_emoji) }
scope :diff_notes, ->{ where(type: ['LegacyDiffNote', 'DiffNote']) }
scope :non_diff_notes, ->{ where(type: ['Note', nil]) }