include CommonApiTemplate
include Trashable
- serialize :properties, Hash
- serialize :storage_classes_desired, Array
- serialize :storage_classes_confirmed, Array
+ # Posgresql JSONB columns should NOT be declared as serialized, Rails 5
+ # already know how to properly treat them.
+ before_validation :fill_field_defaults
before_validation :default_empty_manifest
before_validation :default_storage_classes, on: :create
before_validation :check_encoding
FILE_TOKEN = /^[[:digit:]]+:[[:digit:]]+:/
def check_signatures
- return false if self.manifest_text.nil?
+ throw(:abort) if self.manifest_text.nil?
return true if current_user.andand.is_admin
end
def check_encoding
- if manifest_text.encoding.name == 'UTF-8' and manifest_text.valid_encoding?
- true
- else
+ if !(manifest_text.encoding.name == 'UTF-8' and manifest_text.valid_encoding?)
begin
# If Ruby thinks the encoding is something else, like 7-bit
# ASCII, but its stored bytes are equal to the (valid) UTF-8
rescue
end
errors.add :manifest_text, "must use UTF-8 encoding"
- false
+ throw(:abort)
end
end
true
rescue ArgumentError => e
errors.add :manifest_text, e.message
- false
+ throw(:abort)
end
end
self.current_version_uuid ||= self.uuid
true
end
+
+ def fill_field_defaults
+ self.properties ||= {}
+ self.storage_classes_desired ||= []
+ self.storage_classes_confirmed ||= []
+ end
end