class TheSchemaIs::UnknownColumn

Constants

MSG

Private Instance Methods

extra_columns() click to toggle source
# File lib/the_schema_is/cops.rb, line 199
def extra_columns
  model_columns.reject { |name,| schema_columns.keys.include?(name) }
end
register_offense(_node) click to toggle source
# File lib/the_schema_is/cops.rb, line 183
def register_offense(_node)
  return if model.schema.nil? || schema.nil?

  extra_columns.each do |_, col|
    add_offense(col.source, message: MSG % col.name) do |corrector|
      src_range = col.source.loc.expression
      end_pos = col.source.next_sibling.then { |n|
        n ? n.loc.expression.begin_pos - 2 : col.source.find_parent(:block).loc.end.begin_pos
      }
      range =
        ::Parser::Source::Range.new(src_range.source_buffer, src_range.begin_pos - 2, end_pos)
      corrector.remove(range)
    end
  end
end