[Fix #604] Remove remove_reference
checks from Rails/ReversibleMigration
#606
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 #604
This removes the new check for
remove_reference
inRails/ReversibleMigration
(#592), as well as the recently added check forremove_belongs_to
- an alias ofremove_reference
.As discussed in #604, both of these statements are reversible, since their inverse methods are included in ActiveRecord::Migration::CommandRecorder
It is true that any options that were used in the
add_reference/add_belongs_to
statements need to also be included in theremove_reference
statement; otherwise, a rollback will not properly restore the schema back to its previous state; however, the same could be said of several other reversible statements, such asremove_column
.For example, if I add a column with additional options, like
default
:and then later remove that column without specifying those same options
then a rollback will not properly revert the schema to its previous state; it will be missing the
default
option.Since there is no simple way to check that all of the options on an index, foreign key, constraint, or column are present in the
remove_*
statement, it seems impractical to have a cop for these methods. It will most likely result in more users disabling the cop entirely.Before submitting the PR make sure the following are checked:
[Fix #issue-number]
(if the related issue exists).master
(if not - rebase it).bundle exec rake default
. It executes all tests and runs RuboCop on its own code.{change_type}_{change_description}.md
if the new code introduces user-observable changes. See changelog entry format for details.and description in grammatically correct, complete sentences.