+# Copyright (C) The Arvados Authors. All rights reserved.
+#
+# SPDX-License-Identifier: AGPL-3.0
+
module HasUuid
UUID_REGEX = /^[0-9a-z]{5}-([0-9a-z]{5})-[0-9a-z]{15}$/
base.validate :validate_uuid
base.before_create :assign_uuid
base.before_destroy :destroy_permission_links
- base.has_many :links_via_head, class_name: 'Link', foreign_key: :head_uuid, primary_key: :uuid, conditions: "not (link_class = 'permission')", dependent: :restrict
- base.has_many :links_via_tail, class_name: 'Link', foreign_key: :tail_uuid, primary_key: :uuid, conditions: "not (link_class = 'permission')", dependent: :restrict
+ base.has_many(:links_via_head,
+ -> { where("not (link_class = 'permission')") },
+ class_name: 'Link',
+ foreign_key: 'head_uuid',
+ primary_key: 'uuid',
+ dependent: :destroy)
+ base.has_many(:links_via_tail,
+ -> { where("not (link_class = 'permission')") },
+ class_name: 'Link',
+ foreign_key: 'tail_uuid',
+ primary_key: 'uuid',
+ dependent: :destroy)
end
module ClassMethods
Digest::MD5.hexdigest(self.to_s).to_i(16).to_s(36)[-5..-1]
end
def generate_uuid
- [Server::Application.config.uuid_prefix,
+ [Rails.configuration.ClusterID,
self.uuid_prefix,
rand(2**256).to_s(36)[-15..-1]].
join '-'
end
else
if self.new_record?
- self.errors.add(:uuid, "assignment not permittid")
+ self.errors.add(:uuid, "assignment not permitted")
else
self.errors.add(:uuid, "change not permitted")
end
def destroy_permission_links
if uuid
- Link.destroy_all(['link_class=? and (head_uuid=? or tail_uuid=?)',
- 'permission', uuid, uuid])
+ Link.where(['link_class=? and (head_uuid=? or tail_uuid=?)',
+ 'permission', uuid, uuid]).destroy_all
end
end
end