Expand rails-specific relationship detection #799
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.
I'm not sure if this functionality is of interest to anyone else, but I figured I can share it here and close the PR if it's not something that should be merged. I'm also happy to add some changes if requested/useful.
What
Expand the relation detection for rails naming schemes by supporting custom column names and adding support for UUIDs.
Why
Ruby on Rails doesn't add foreign keys by default, instead relying on a specific naming scheme, which the -rails flag activates. In this scheme, table names are plural and each table has an
id
column. Child-tables reference the parent-table via"${singularParentTableName}.id"
, e.g. a table calledcompanies
would be referenced ascompany_id
.It's possible to use custom names for mapping columns in rails, often used to map two columns to two different records in the same parent table. This PR adds support for prefixed column names, e.g.
original_company_id
andcurrent_company_id
would both resolve tocompanies.id
.We also use UUIDs in some areas in addition to an autoincrementing ID field, and this PR adds support for
_uuid
suffices.