Class: RuboCop::Cop::Rails::UnusedIgnoredColumns
- Inherits:
-
Base
- Object
- Base
- RuboCop::Cop::Rails::UnusedIgnoredColumns
- Includes:
- ActiveRecordHelper
- Defined in:
- lib/rubocop/cop/rails/unused_ignored_columns.rb
Overview
Suggests you remove a column that does not exist in the schema from ignored_columns
.
ignored_columns
is necessary to drop a column from RDBMS, but you don't need it after the migration
to drop the column. You avoid forgetting to remove ignored_columns
by this cop.
IMPORTANT: This cop can't be used to effectively check for unused columns because the development
and production schema can be out of sync until the migration has been run on production. As such,
this cop can cause ignored_columns
to be removed even though the production schema still contains
the column, which can lead to downtime when the migration is actually executed. Only enable this cop
if you know your migrations will be run before any of your Rails applications boot with the modified code.
Constant Summary collapse
- MSG =
'Remove `%<column_name>s` from `ignored_columns` because the column does not exist.'
- RESTRICT_ON_SEND =
%i[ignored_columns=].freeze
Constants included from ActiveRecordHelper
ActiveRecordHelper::WHERE_METHODS
Instance Method Summary collapse
- #on_send(node) ⇒ Object (also: #on_op_asgn)
Methods included from ActiveRecordHelper
#external_dependency_checksum, #foreign_key_of, #in_where?, #inherit_active_record_base?, #polymorphic?, #resolve_relation_into_column, #schema, #table_name
Instance Method Details
#on_send(node) ⇒ Object Also known as: on_op_asgn
45 46 47 48 49 50 51 52 53 54 55 |
# File 'lib/rubocop/cop/rails/unused_ignored_columns.rb', line 45 def on_send(node) return unless (columns = ignored_columns(node) || appended_ignored_columns(node)) return unless schema table = table(node) return unless table columns.children.each do |column_node| check_column_existence(column_node, table) end end |