Disallow id
as an enum value in Active Record
#48527
Merged
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.
Fixes #48524
The test case in the issue breaks because
value.respond_to?(:id)
returns true here. This effectively adds a default scope to queries where it shouldn't.There might be a way to fix this in Active Record but I'd be surprised if nothing else breaks from defining
id
instance and class methods. I think it is simpler to not allow it as a value since it really should be treated as a reserved method.You can use
_prefix: true
to work around this if you want to useid
as a value.