diff options
author | Go MAEDA <maeda@farend.jp> | 2017-11-29 22:22:39 +0000 |
---|---|---|
committer | Go MAEDA <maeda@farend.jp> | 2017-11-29 22:22:39 +0000 |
commit | 3a310ccc2e1b8d7ce6883d73059ba2722bfbe99f (patch) | |
tree | 23a0bd086cc96c2a2549b47c62f2260ee7db9f7b /app/models/issue_relation.rb | |
parent | 62d6dfe1ccc1841ef97d9ed23b45086de78dafd1 (diff) | |
download | redmine-3a310ccc2e1b8d7ce6883d73059ba2722bfbe99f.tar.gz redmine-3a310ccc2e1b8d7ce6883d73059ba2722bfbe99f.zip |
Disallow creating inverse relates issue relations (#27663).
Patch by Gregor Schmidt.
git-svn-id: http://svn.redmine.org/redmine/trunk@17054 e93f8b46-1217-0410-a6f0-8f06a7374b81
Diffstat (limited to 'app/models/issue_relation.rb')
-rw-r--r-- | app/models/issue_relation.rb | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/app/models/issue_relation.rb b/app/models/issue_relation.rb index 44c7c8dba..0a47b1341 100644 --- a/app/models/issue_relation.rb +++ b/app/models/issue_relation.rb @@ -207,13 +207,19 @@ class IssueRelation < ActiveRecord::Base # Reverses the relation if needed so that it gets stored in the proper way # Should not be reversed before validation so that it can be displayed back - # as entered on new relation form + # as entered on new relation form. + # + # Orders relates relations by ID, so that uniqueness index in DB is triggered + # on concurrent access. def reverse_if_needed if TYPES.has_key?(relation_type) && TYPES[relation_type][:reverse] issue_tmp = issue_to self.issue_to = issue_from self.issue_from = issue_tmp self.relation_type = TYPES[relation_type][:reverse] + + elsif relation_type == TYPE_RELATES && issue_from_id > issue_to_id + self.issue_to, self.issue_from = issue_from, issue_to end end @@ -228,6 +234,8 @@ class IssueRelation < ActiveRecord::Base issue_from.blocks? issue_to when 'blocks' issue_to.blocks? issue_from + when 'relates' + self.class.where(issue_from_id: issue_to, issue_to_id: issue_from).present? else false end |