Bugfix: Ensure has_one associations saved when part of CPK has changed #48491
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.
Motivation / Background
If a has_one association uses a composite primary key, and part of the composite primary key changes on the owner, these changes need to be reflected on the belonging object's foreign key.
This was not working previously, because
#_record_changed?
was not equipped to handle composite primary key associations, so we were not recognizing that the belonging object's foreign key needed to be updated when the owner's primary key changed.Detail
Maintain the same check as was previously used in
#_record_changed?
, but adjust it to accommodate composite primary | foreign keys. This means checking that the record has all attributes that form the primary key on the owner, and then checking that the composite FK values don't match the owner's PK. This indicates that the record has changed, and that we should update its foreign key values accordingly.Additional information
Checklist
Before submitting the PR make sure the following are checked:
[Fix #issue-number]