X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/8fcba3783d9a79bb18a00d339f9b3222f1eccd7f..cf32ef421c037692e7ae896f695c61d8e3670f01:/services/api/app/models/arvados_model.rb diff --git a/services/api/app/models/arvados_model.rb b/services/api/app/models/arvados_model.rb index 006eb90e12..4faa0d041f 100644 --- a/services/api/app/models/arvados_model.rb +++ b/services/api/app/models/arvados_model.rb @@ -14,7 +14,6 @@ class ArvadosModel < ActiveRecord::Base before_save :ensure_ownership_path_leads_to_user before_destroy :ensure_owner_uuid_is_permitted before_destroy :ensure_permission_to_destroy - before_create :update_modified_by_fields before_update :maybe_update_modified_by_fields after_create :log_create @@ -27,7 +26,7 @@ class ArvadosModel < ActiveRecord::Base # Note: This only returns permission links. It does not account for # permissions obtained via user.is_admin or # user.uuid==object.owner_uuid. - has_many :permissions, :foreign_key => :head_uuid, :class_name => 'Link', :primary_key => :uuid, :conditions => "link_class = 'permission'" + has_many :permissions, :foreign_key => :head_uuid, :class_name => 'Link', :primary_key => :uuid, :conditions => "link_class = 'permission'", dependent: :destroy class PermissionDeniedError < StandardError def http_status @@ -237,6 +236,11 @@ class ArvadosModel < ActiveRecord::Base return true end + def destroy_permission_links + Link.destroy_all(['link_class=? and (head_uuid=? or tail_uuid=?)', + 'permission', uuid, uuid]) + end + def ensure_permission_to_destroy raise PermissionDeniedError unless permission_to_destroy end