Populate schema_version
based on namespace of current_metadata
#1182
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Purpose
Currently,
schema_version
is sometimes not populated, and users can send arbitrary values in aschemaVersion
attribute that are then written to the column. This confuses what schema version a given DOI is using, causing issues with reporting as well as with display in the REST API, in Fabrica, and elsewhere. See the issues listed below. This PR intends to use the XML namespace of the most current metadata object to writeschema_version
deterministically upon saving a record.closes: #1179 datacite/datacite#1855
Approach
Adds a
before_save
callback in Doi model to retrievecurrent_metadata.namespace
and setschema_version
to the result. Once validated, the Metadata modelnamespace
contains the current schema version via theset_namespace
method:lupo/app/models/metadata.rb
Lines 82 to 91 in c861f12
This method retrieves the xmlns value of the XML, which by nature must contain a valid namespace value. In other words, inaccurate values and sub-version values like http://datacite.org/schema/kernel-4.5 will not validate if in the xmlns value of the source XML and thus cannot appear as the saved
schema_version
value.Open Questions and Pre-Merge TODOs
Learning
Types of changes
Bug fix (non-breaking change which fixes an issue)
New feature (non-breaking change which adds functionality)
Breaking change (fix or feature that would cause existing functionality to change)
Reviewer, please remember our guidelines: