From 87c44b0e91959439014fb8c923f3febc039d1cd0 Mon Sep 17 00:00:00 2001 From: Grzegorz Bizon Date: Tue, 26 Apr 2016 09:35:03 +0200 Subject: [PATCH] Improve note validation for project mismatch --- app/models/note.rb | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/app/models/note.rb b/app/models/note.rb index 8743b5eb472..02a98a37117 100644 --- a/app/models/note.rb +++ b/app/models/note.rb @@ -29,13 +29,15 @@ class Note < ActiveRecord::Base # Attachments are deprecated and are handled by Markdown uploader validates :attachment, file_size: { maximum: :max_attachment_size } - 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' } + validates :noteable_id, presence: true, unless: :for_commit? + validates :commit_id, presence: true, if: :for_commit? validates :author, presence: true - validate do |note| - unless note.noteable.project == project - errors.add(:invalid_project, 'Note and noteable project mismatch') + with_options unless: :for_commit? do + validate do |note| + unless note.noteable.try(:project) == project + errors.add(:invalid_project, 'Note and noteable project mismatch') + end end end