summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRubén Dávila Santos <ruben@gitlab.com>2016-08-20 18:03:23 +0000
committerRubén Dávila Santos <ruben@gitlab.com>2016-08-20 18:03:23 +0000
commitb8728c0bb0e474edcdceaec9c7b6960bb6d879ac (patch)
tree9f5a1e13e445d4d25af680eaea80fc16a67a73ce
parent6a05f24621646790d1f5bccd0abc003b5386d0f0 (diff)
parent5cb488e8a1a10432c1c5a322b2d4748cb754277f (diff)
downloadgitlab-ce-b8728c0bb0e474edcdceaec9c7b6960bb6d879ac.tar.gz
Merge branch 'fix-network-graph-error-500' into 'master'
Fix Error 500 resulting when loading network graph `discussion_id` may not be present when the SELECT call for notes does not include this attribute. Don't attempt to set the discussion ID unless the model contains the attribute: ```ruby irb(main):019:0> notes[0] Note Load (10.3ms) SELECT notes.commit_id, count(notes.id) as note_count FROM "notes" WHERE "notes"."project_id" = $1 AND (noteable_type = 'Commit') GROUP BY notes.commit_id [["project_id", 13083]] ActiveModel::MissingAttributeError: missing attribute: discussion_id ``` Closes #21119, #21128 See merge request !5922
-rw-r--r--app/models/note.rb2
-rw-r--r--spec/models/network/graph_spec.rb12
2 files changed, 14 insertions, 0 deletions
diff --git a/app/models/note.rb b/app/models/note.rb
index 3bbf5db0b70..f2656df028b 100644
--- a/app/models/note.rb
+++ b/app/models/note.rb
@@ -259,6 +259,8 @@ class Note < ActiveRecord::Base
def ensure_discussion_id
return unless self.persisted?
+ # Needed in case the SELECT statement doesn't ask for `discussion_id`
+ return unless self.has_attribute?(:discussion_id)
return if self.discussion_id
set_discussion_id
diff --git a/spec/models/network/graph_spec.rb b/spec/models/network/graph_spec.rb
new file mode 100644
index 00000000000..b76513d2a3c
--- /dev/null
+++ b/spec/models/network/graph_spec.rb
@@ -0,0 +1,12 @@
+require 'spec_helper'
+
+describe Network::Graph, models: true do
+ let(:project) { create(:project) }
+ let!(:note_on_commit) { create(:note_on_commit, project: project) }
+
+ it '#initialize' do
+ graph = described_class.new(project, 'refs/heads/master', project.repository.commit, nil)
+
+ expect(graph.notes).to eq( { note_on_commit.commit_id => 1 } )
+ end
+end