before_validation :strip_manifest_text
before_validation :set_portable_data_hash
validate :ensure_hash_matches_manifest_text
+ before_save :set_file_names
# Query only undeleted collections by default.
default_scope where("expires_at IS NULL or expires_at > CURRENT_TIMESTAMP")
end
end
+ def set_file_names
+ if self.manifest_text_changed?
+ file_names = []
+ if self.manifest_text
+ self.manifest_text.split.each do |part|
+ file_name = part.rpartition(':')[-1]
+ file_names << file_name if file_name != '.'
+ end
+ end
+ self.file_names = file_names.uniq.join(" ")[0,2**13]
+ end
+ true
+ end
+
def check_encoding
if manifest_text.encoding.name == 'UTF-8' and manifest_text.valid_encoding?
true