class RuboCop::Cop::Rails::UnusedIgnoredColumns
This cop 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.
@example
# bad class User < ApplicationRecord self.ignored_columns = [:already_removed_column] end # good class User < ApplicationRecord self.ignored_columns = [:still_existing_column] end
Constants
- MSG
- RESTRICT_ON_SEND
Public Instance Methods
on_send(node)
click to toggle source
# File lib/rubocop/cop/rails/unused_ignored_columns.rb, line 35 def on_send(node) return unless (columns = 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
Private Instance Methods
check_column_existence(column_node, table)
click to toggle source
# File lib/rubocop/cop/rails/unused_ignored_columns.rb, line 49 def check_column_existence(column_node, table) column_name = column_name(column_node) return unless column_name return if table.with_column?(name: column_name.to_s) message = format(MSG, column_name: column_name) add_offense(column_node, message: message) end
class_node(node)
click to toggle source
# File lib/rubocop/cop/rails/unused_ignored_columns.rb, line 58 def class_node(node) node.each_ancestor.find(&:class_type?) end
table(node)
click to toggle source
# File lib/rubocop/cop/rails/unused_ignored_columns.rb, line 62 def table(node) klass = class_node(node) schema.table_by(name: table_name(klass)) end