class TheSchemaIs::MissingColumn
Constants
- MSG
Private Instance Methods
insert_column(corrector, name, col)
click to toggle source
# File lib/the_schema_is/cops.rb, line 149 def insert_column(corrector, name, col) prev_statement = model_columns .slice(*schema_columns.keys[0...schema_columns.keys.index(name)]) .values.last&.source if prev_statement indent = prev_statement.loc.expression.column corrector.insert_after( prev_statement.loc.expression, "\n#{' ' * indent}#{col.source.loc.expression.source}" ) else indent = model.schema.loc.expression.column + 2 corrector.insert_after( # of "the_schema_is do |t|" -- children[1] is "|t|"" model.schema.children[1].loc.expression, "\n#{' ' * indent}#{col.source.loc.expression.source}" ) end end
missing_columns()
click to toggle source
# File lib/the_schema_is/cops.rb, line 170 def missing_columns schema_columns.reject { |name,| model_columns.keys.include?(name) } end
register_offense(_node)
click to toggle source
# File lib/the_schema_is/cops.rb, line 139 def register_offense(_node) return if model.schema.nil? || schema.nil? missing_columns.each do |name, col| add_offense(model.schema, message: MSG % col.name) do |corrector| insert_column(corrector, name, col) end end end