diff options
Diffstat (limited to 'app')
-rw-r--r-- | app/models/merge_request.rb | 2 | ||||
-rw-r--r-- | app/models/note.rb | 10 | ||||
-rw-r--r-- | app/models/project.rb | 6 | ||||
-rw-r--r-- | app/roles/note_event.rb | 8 | ||||
-rw-r--r-- | app/views/notes/_common_form.html.haml | 1 | ||||
-rw-r--r-- | app/views/notes/_per_line_form.html.haml | 1 |
6 files changed, 19 insertions, 9 deletions
diff --git a/app/models/merge_request.rb b/app/models/merge_request.rb index 2409fb80acb..052e0850d96 100644 --- a/app/models/merge_request.rb +++ b/app/models/merge_request.rb @@ -204,7 +204,7 @@ class MergeRequest < ActiveRecord::Base def mr_and_commit_notes commit_ids = commits.map(&:id) - Note.where("(noteable_type = 'MergeRequest' AND noteable_id = :mr_id) OR (noteable_type = 'Commit' AND noteable_id IN (:commit_ids))", mr_id: id, commit_ids: commit_ids) + Note.where("(noteable_type = 'MergeRequest' AND noteable_id = :mr_id) OR (noteable_type = 'Commit' AND commit_id IN (:commit_ids))", mr_id: id, commit_ids: commit_ids) end # Returns the raw diff for this merge request diff --git a/app/models/note.rb b/app/models/note.rb index 219ed9b9332..28b3879239f 100644 --- a/app/models/note.rb +++ b/app/models/note.rb @@ -20,7 +20,7 @@ require 'file_size_validator' class Note < ActiveRecord::Base attr_accessible :note, :noteable, :noteable_id, :noteable_type, :project_id, - :attachment, :line_code + :attachment, :line_code, :commit_id attr_accessor :notify attr_accessor :notify_author @@ -35,10 +35,14 @@ class Note < ActiveRecord::Base validates :note, :project, presence: true validates :attachment, file_size: { maximum: 10.megabytes.to_i } + validates :noteable_id, presence: true, if: ->(n) { n.noteable_type.present? && n.noteable_type != 'Commit' } + validates :commit_id, presence: true, if: ->(n) { n.noteable_type == 'Commit' } + mount_uploader :attachment, AttachmentUploader # Scopes - scope :common, ->{ where(noteable_id: nil) } + scope :for_commits, ->{ where(noteable_type: "Commit") } + scope :common, ->{ where(noteable_id: nil, commit_id: nil) } scope :today, ->{ where("created_at >= :date", date: Date.today) } scope :last_week, ->{ where("created_at >= :date", date: (Date.today - 7.days)) } scope :since, ->(day) { where("created_at >= :date", date: (day)) } @@ -66,7 +70,7 @@ class Note < ActiveRecord::Base # override to return commits, which are not active record def noteable if for_commit? - project.commit(noteable_id) + project.commit(commit_id) else super end diff --git a/app/models/project.rb b/app/models/project.rb index 5871bc67f69..eb6e7cb1b08 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -203,15 +203,15 @@ class Project < ActiveRecord::Base end def build_commit_note(commit) - notes.new(noteable_id: commit.id, noteable_type: "Commit") + notes.new(commit_id: commit.id, noteable_type: "Commit") end def commit_notes(commit) - notes.where(noteable_id: commit.id, noteable_type: "Commit", line_code: nil) + notes.where(commit_id: commit.id, noteable_type: "Commit", line_code: nil) end def commit_line_notes(commit) - notes.where(noteable_id: commit.id, noteable_type: "Commit").where("line_code IS NOT NULL") + notes.where(commit_id: commit.id, noteable_type: "Commit").where("line_code IS NOT NULL") end def public? diff --git a/app/roles/note_event.rb b/app/roles/note_event.rb index 884ab432ec8..db4ced0c095 100644 --- a/app/roles/note_event.rb +++ b/app/roles/note_event.rb @@ -1,6 +1,6 @@ module NoteEvent def note_commit_id - target.noteable_id + target.commit_id end def note_short_commit_id @@ -16,7 +16,11 @@ module NoteEvent end def note_target_id - target.noteable_id + if note_commit? + target.commit_id + else + target.noteable_id.to_s + end end def wall_note? diff --git a/app/views/notes/_common_form.html.haml b/app/views/notes/_common_form.html.haml index 0725082d504..d76be75bc27 100644 --- a/app/views/notes/_common_form.html.haml +++ b/app/views/notes/_common_form.html.haml @@ -7,6 +7,7 @@ %div= msg = f.hidden_field :noteable_id + = f.hidden_field :commit_id = f.hidden_field :noteable_type = f.text_area :note, size: 255, class: 'note-text js-gfm-input' #preview-note.preview_note.hide diff --git a/app/views/notes/_per_line_form.html.haml b/app/views/notes/_per_line_form.html.haml index c8d79850162..ff80ad4e0d5 100644 --- a/app/views/notes/_per_line_form.html.haml +++ b/app/views/notes/_per_line_form.html.haml @@ -11,6 +11,7 @@ %div= msg = f.hidden_field :noteable_id + = f.hidden_field :commit_id = f.hidden_field :noteable_type = f.hidden_field :line_code = f.text_area :note, size: 255, class: 'line-note-text js-gfm-input' |