X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/e19b02f69914c086f979ec31eb603bb3b456cd15..cf32ef421c037692e7ae896f695c61d8e3670f01:/services/api/app/models/arvados_model.rb?ds=sidebyside diff --git a/services/api/app/models/arvados_model.rb b/services/api/app/models/arvados_model.rb index 69d329f02a..4faa0d041f 100644 --- a/services/api/app/models/arvados_model.rb +++ b/services/api/app/models/arvados_model.rb @@ -26,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 @@ -236,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