diff options
author | Jean-Philippe Lang <jp_lang@yahoo.fr> | 2014-11-02 15:38:11 +0000 |
---|---|---|
committer | Jean-Philippe Lang <jp_lang@yahoo.fr> | 2014-11-02 15:38:11 +0000 |
commit | 32b79b6fd4e3a523ee393d7a3e2bb60dbeed77c3 (patch) | |
tree | 5050ce8fcb138d88180d9c3d61e34c05dc03a4d8 /app/models/issue_relation.rb | |
parent | 43f6914f520f9a79220414cdd5d54d6fa2cc0720 (diff) | |
download | redmine-32b79b6fd4e3a523ee393d7a3e2bb60dbeed77c3.tar.gz redmine-32b79b6fd4e3a523ee393d7a3e2bb60dbeed77c3.zip |
Fixed that IssueRelation should not be responsible for calling Issue#init_journal (#18237).
git-svn-id: http://svn.redmine.org/redmine/trunk@13534 e93f8b46-1217-0410-a6f0-8f06a7374b81
Diffstat (limited to 'app/models/issue_relation.rb')
-rw-r--r-- | app/models/issue_relation.rb | 47 |
1 files changed, 21 insertions, 26 deletions
diff --git a/app/models/issue_relation.rb b/app/models/issue_relation.rb index 2659bb2e7..7248a8868 100644 --- a/app/models/issue_relation.rb +++ b/app/models/issue_relation.rb @@ -72,8 +72,8 @@ class IssueRelation < ActiveRecord::Base attr_protected :issue_from_id, :issue_to_id before_save :handle_issue_order - after_create :create_journal_after_create - after_destroy :create_journal_after_delete + after_create :call_issues_relation_added_callback + after_destroy :call_issues_relation_removed_callback def visible?(user=User.current) (issue_from.nil? || issue_from.visible?(user)) && (issue_to.nil? || issue_to.visible?(user)) @@ -168,6 +168,11 @@ class IssueRelation < ActiveRecord::Base r == 0 ? id <=> relation.id : r end + def init_journals(user) + issue_from.init_journal(user) if issue_from + issue_to.init_journal(user) if issue_to + end + private # Reverses the relation if needed so that it gets stored in the proper way @@ -182,29 +187,19 @@ class IssueRelation < ActiveRecord::Base end end - def create_journal_after_create - journal = issue_from.init_journal(User.current) - journal.details << JournalDetail.new(:property => 'relation', - :prop_key => relation_type_for(issue_from), - :value => issue_to.id) - journal.save - journal = issue_to.init_journal(User.current) - journal.details << JournalDetail.new(:property => 'relation', - :prop_key => relation_type_for(issue_to), - :value => issue_from.id) - journal.save - end - - def create_journal_after_delete - journal = issue_from.init_journal(User.current) - journal.details << JournalDetail.new(:property => 'relation', - :prop_key => relation_type_for(issue_from), - :old_value => issue_to.id) - journal.save - journal = issue_to.init_journal(User.current) - journal.details << JournalDetail.new(:property => 'relation', - :prop_key => relation_type_for(issue_to), - :old_value => issue_from.id) - journal.save + def call_issues_relation_added_callback + call_issues_callback :relation_added + end + + def call_issues_relation_removed_callback + call_issues_callback :relation_removed + end + + def call_issues_callback(name) + [issue_from, issue_to].each do |issue| + if issue + issue.send name, self + end + end end end |