diff options
author | Valery Sizov <valery@gitlab.com> | 2017-02-24 17:32:35 +0300 |
---|---|---|
committer | Valery Sizov <valery@gitlab.com> | 2017-02-24 17:32:35 +0300 |
commit | 1ff3cd993468f5e1825d2824fbc93d25899b8014 (patch) | |
tree | 884cc8449638b93013e7a0b7ee4891f545d2f5e7 /app/services/issuable_base_service.rb | |
parent | 034397d31f0ff64771520e8ee0cc745d793f31e4 (diff) | |
parent | f40403cce1a8185254e74dff54ee687b7953093b (diff) |
Merge branch 'master' of gitlab.com:gitlab-org/gitlab-ce into orderable-issues
Diffstat (limited to 'app/services/issuable_base_service.rb')
-rw-r--r-- | app/services/issuable_base_service.rb | 32 |
1 files changed, 18 insertions, 14 deletions
diff --git a/app/services/issuable_base_service.rb b/app/services/issuable_base_service.rb index 2256d7db008..dcb4a96d16a 100644 --- a/app/services/issuable_base_service.rb +++ b/app/services/issuable_base_service.rb @@ -191,14 +191,12 @@ class IssuableBaseService < BaseService # To be overridden by subclasses end - def after_update(issuable) + def before_update(issuable) # To be overridden by subclasses end - def update_issuable(issuable, attributes) - issuable.with_transaction_returning_status do - issuable.update(attributes.merge(updated_by: current_user)) - end + def after_update(issuable) + # To be overridden by subclasses end def update(issuable) @@ -212,16 +210,22 @@ class IssuableBaseService < BaseService label_ids = process_label_ids(params, existing_label_ids: issuable.label_ids) params[:label_ids] = label_ids if labels_changing?(issuable.label_ids, label_ids) - if (issuable.changed? || params.present?) && update_issuable(issuable, params) - # We do not touch as it will affect a update on updated_at field - ActiveRecord::Base.no_touching do - handle_common_system_notes(issuable, old_labels: old_labels) - end + if issuable.changed? || params.present? + issuable.assign_attributes(params.merge(updated_by: current_user)) + + before_update(issuable) - handle_changes(issuable, old_labels: old_labels, old_mentioned_users: old_mentioned_users) - after_update(issuable) - issuable.create_new_cross_references!(current_user) - execute_hooks(issuable, 'update') + if issuable.with_transaction_returning_status { issuable.save } + # We do not touch as it will affect a update on updated_at field + ActiveRecord::Base.no_touching do + handle_common_system_notes(issuable, old_labels: old_labels) + end + + handle_changes(issuable, old_labels: old_labels, old_mentioned_users: old_mentioned_users) + after_update(issuable) + issuable.create_new_cross_references!(current_user) + execute_hooks(issuable, 'update') + end end issuable |