2411: Add copyright notices to everything.
[arvados.git] / services / api / lib / has_uuid.rb
index df175f8602851a638db0a2b7727ccb1d489a792a..dc8bdcb6c5ab126cbc9e2a758173c37c8faae7d9 100644 (file)
@@ -1,3 +1,7 @@
+# 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}$/
@@ -7,8 +11,18 @@ module HasUuid
     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
@@ -36,18 +50,18 @@ module HasUuid
           if re[1] == self.class.uuid_prefix
             return true
           else
-            self.errors.add(:uuid, "Matched uuid type '#{re[1]}', expected '#{self.class.uuid_prefix}'")
+            self.errors.add(:uuid, "type field is '#{re[1]}', expected '#{self.class.uuid_prefix}'")
             return false
           end
         else
-          self.errors.add(:uuid, "'#{self.uuid}' is not a valid Arvados UUID")
+          self.errors.add(:uuid, "not a valid Arvados uuid '#{self.uuid}'")
           return false
         end
       else
         if self.new_record?
-          self.errors.add(:uuid, "Not permitted to specify uuid")
+          self.errors.add(:uuid, "assignment not permitted")
         else
-          self.errors.add(:uuid, "Not permitted to change uuid")
+          self.errors.add(:uuid, "change not permitted")
         end
         return false
       end