Fix ActiveRecordRelation compiler's handling of composite primary keys #1966
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
During
ActiveRecordRelation
compiler's decorate it generates the wrong method signature of the#find
method for records with composite keys. The signature for the method appears to have been updated when multiple values are passed (i.e. array of arrays), but the singular value still shows asT.any(....)
when it should be wrapped in an array.Implementation
I've updated the handling so if
#composite_primary_key?
is present and returns a truthy value then the value of ids will be updated to be an array of instead. This then works forward so that the value for an array of composite keys is correct too.Tests
Updated tests to reflect changes.