Improve note validation for project mismatch
This commit is contained in:
parent
c31a296c94
commit
87c44b0e91
1 changed files with 7 additions and 5 deletions
|
@ -29,13 +29,15 @@ class Note < ActiveRecord::Base
|
||||||
# Attachments are deprecated and are handled by Markdown uploader
|
# Attachments are deprecated and are handled by Markdown uploader
|
||||||
validates :attachment, file_size: { maximum: :max_attachment_size }
|
validates :attachment, file_size: { maximum: :max_attachment_size }
|
||||||
|
|
||||||
validates :noteable_id, presence: true, if: ->(n) { n.noteable_type.present? && n.noteable_type != 'Commit' }
|
validates :noteable_id, presence: true, unless: :for_commit?
|
||||||
validates :commit_id, presence: true, if: ->(n) { n.noteable_type == 'Commit' }
|
validates :commit_id, presence: true, if: :for_commit?
|
||||||
validates :author, presence: true
|
validates :author, presence: true
|
||||||
|
|
||||||
validate do |note|
|
with_options unless: :for_commit? do
|
||||||
unless note.noteable.project == project
|
validate do |note|
|
||||||
errors.add(:invalid_project, 'Note and noteable project mismatch')
|
unless note.noteable.try(:project) == project
|
||||||
|
errors.add(:invalid_project, 'Note and noteable project mismatch')
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue