Fix failing test in 8d6efcbfb559e377a8f21873b736390035bc44ed.
[arvados.git] / services / api / app / models / arvados_model.rb
index dbb807c0b6b4005193babfef0a93481f1f75ef56..25d73178c771a47c085fa32bd19b9c6e9676a1c7 100644 (file)
@@ -154,7 +154,7 @@ class ArvadosModel < ActiveRecord::Base
   end
 
   def update_modified_by_fields
-    self.created_at ||= Time.now
+    self.updated_at = Time.now
     self.owner_uuid ||= current_default_owner if self.respond_to? :owner_uuid=
     self.modified_at = Time.now
     self.modified_by_user_uuid = current_user ? current_user.uuid : nil
@@ -185,6 +185,10 @@ class ArvadosModel < ActiveRecord::Base
     %w(modified_by_client_uuid)
   end
 
+  def skip_uuid_existence_check
+    []
+  end
+
   def normalize_collection_uuids
     foreign_key_attributes.each do |attr|
       attr_value = send attr
@@ -223,11 +227,18 @@ class ArvadosModel < ActiveRecord::Base
 
     foreign_key_attributes.each do |attr|
       if new_record? or send (attr + "_changed?")
+        next if skip_uuid_existence_check.include? attr
         attr_value = send attr
-        r = ArvadosModel::resource_class_for_uuid attr_value if attr_value
-        r = r.readable_by(current_user) if r and not skip_uuid_read_permission_check.include? attr
-        if r and r.where(uuid: attr_value).count == 0 and not specials.include? attr_value
-          errors.add(attr, "'#{attr_value}' not found")
+        next if specials.include? attr_value
+        if attr_value
+          if (r = ArvadosModel::resource_class_for_uuid attr_value)
+            unless skip_uuid_read_permission_check.include? attr
+              r = r.readable_by(current_user)
+            end
+            if r.where(uuid: attr_value).count == 0
+              errors.add(attr, "'#{attr_value}' not found")
+            end
+          end
         end
       end
     end