From e53169c9702f1f4f25f8f1e91ed9ab7ace0a3d41 Mon Sep 17 00:00:00 2001 From: Douwe Maan Date: Mon, 29 May 2017 16:07:57 -0500 Subject: Resolve N+1 query issue with discussions --- app/models/discussion.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'app/models/discussion.rb') diff --git a/app/models/discussion.rb b/app/models/discussion.rb index 0b6b920ed66..6a92b8eef66 100644 --- a/app/models/discussion.rb +++ b/app/models/discussion.rb @@ -21,7 +21,8 @@ class Discussion end def self.build_collection(notes, context_noteable = nil) - notes.group_by { |n| n.discussion_id(context_noteable) }.values.map { |notes| build(notes, context_noteable) } + grouped_notes = notes.includes(:noteable).group_by { |n| n.discussion_id(context_noteable) } + grouped_notes.values.map { |notes| build(notes, context_noteable) } end # Returns an alphanumeric discussion ID based on `build_discussion_id` -- cgit v1.2.1 From 78207b95ca7795c82bfc14fdf35422714906b14d Mon Sep 17 00:00:00 2001 From: Douwe Maan Date: Wed, 31 May 2017 14:00:30 -0500 Subject: Move includes call to scope --- app/models/discussion.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'app/models/discussion.rb') diff --git a/app/models/discussion.rb b/app/models/discussion.rb index 6a92b8eef66..9b32d573387 100644 --- a/app/models/discussion.rb +++ b/app/models/discussion.rb @@ -21,7 +21,7 @@ class Discussion end def self.build_collection(notes, context_noteable = nil) - grouped_notes = notes.includes(:noteable).group_by { |n| n.discussion_id(context_noteable) } + grouped_notes = notes.group_by { |n| n.discussion_id(context_noteable) } grouped_notes.values.map { |notes| build(notes, context_noteable) } end -- cgit v1.2.1 From 34fcade1fd104deecaba69dc050cf2dcabb9e866 Mon Sep 17 00:00:00 2001 From: Douwe Maan Date: Thu, 1 Jun 2017 09:05:21 -0500 Subject: Fix replying to a commit discussion displayed in the context of an MR --- app/models/discussion.rb | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'app/models/discussion.rb') diff --git a/app/models/discussion.rb b/app/models/discussion.rb index 9b32d573387..d1cec7613af 100644 --- a/app/models/discussion.rb +++ b/app/models/discussion.rb @@ -85,6 +85,12 @@ class Discussion first_note.discussion_id(context_noteable) end + def reply_id + # To reply to this discussion, we need the actual discussion_id from the database, + # not the potentially overwritten one based on the noteable. + first_note.discussion_id + end + alias_method :to_param, :id def diff_discussion? -- cgit v1.2.1