diff options
author | Jan Provaznik <jprovaznik@gitlab.com> | 2018-05-02 18:21:42 +0200 |
---|---|---|
committer | Jan Provaznik <jprovaznik@gitlab.com> | 2018-05-16 08:58:07 +0200 |
commit | 7da3b2cdd09078984416aa03da108ad0a4a4e477 (patch) | |
tree | 5de71e612201909d1a93ec93c19571f9a5984194 /app/models/group.rb | |
parent | 14507fd18110c6662f56709835a0d68468d7680e (diff) | |
download | gitlab-ce-7da3b2cdd09078984416aa03da108ad0a4a4e477.tar.gz |
Delete remote uploads
ObjectStore uploader requires presence of associated `uploads` record
when deleting the upload file (through the carrierwave's after_commit
hook) because we keep info whether file is LOCAL or REMOTE in `upload`
object.
For this reason we can not destroy uploads as "dependent: :destroy" hook
because these would be deleted too soon. Instead we rely on
carrierwave's hook to destroy `uploads` in after_commit hook.
But in before_destroy hook we still have to delete not-mounted uploads
(which don't use carrierwave's destroy hook). This has to be done in
before_Destroy instead of after_commit because `FileUpload` requires
existence of model's object on destroy action.
This is not ideal state of things, in a next step we should investigate
how to unify model dependencies so we can use same workflow for all
uploads.
Related to #45425
Diffstat (limited to 'app/models/group.rb')
-rw-r--r-- | app/models/group.rb | 3 |
1 files changed, 1 insertions, 2 deletions
diff --git a/app/models/group.rb b/app/models/group.rb index cefca316399..107711e3cc5 100644 --- a/app/models/group.rb +++ b/app/models/group.rb @@ -2,6 +2,7 @@ require 'carrierwave/orm/activerecord' class Group < Namespace include Gitlab::ConfigHelper + include WithUploads include AfterCommitQueue include AccessRequestable include Avatarable @@ -30,8 +31,6 @@ class Group < Namespace has_many :variables, class_name: 'Ci::GroupVariable' has_many :custom_attributes, class_name: 'GroupCustomAttribute' - has_many :uploads, as: :model, dependent: :destroy # rubocop:disable Cop/ActiveRecordDependent - has_many :boards has_many :badges, class_name: 'GroupBadge' |