From e1ac5725ee2b52ac9b0b6ca53d37ceb15e0ef7e3 Mon Sep 17 00:00:00 2001 From: Syed Faraaz Ahmad Date: Sun, 6 Aug 2023 16:13:01 +0530 Subject: [PATCH] ignore columns defined as string --- lib/trains/utils/migration_tailor.rb | 2 ++ lib/trains/visitor/model.rb | 4 ++-- spec/lib/trains/visitor/model_spec.rb | 16 ++++++++++------ 3 files changed, 14 insertions(+), 8 deletions(-) diff --git a/lib/trains/utils/migration_tailor.rb b/lib/trains/utils/migration_tailor.rb index 9049f08..cb1a3db 100644 --- a/lib/trains/utils/migration_tailor.rb +++ b/lib/trains/utils/migration_tailor.rb @@ -19,6 +19,8 @@ def self.stitch(models = {}, migrations) end when :add_column, :add_column_with_default, :add_reference models[mig.table_name].fields.push(*mig.fields) + when :ignore_column + models[mig.table_name].ignored_columns.push(*mig.fields.map(&:name)) when :remove_column column = models[mig.table_name].fields.find do |field| diff --git a/lib/trains/visitor/model.rb b/lib/trains/visitor/model.rb index 43d74b1..a9c28d2 100644 --- a/lib/trains/visitor/model.rb +++ b/lib/trains/visitor/model.rb @@ -39,13 +39,13 @@ def parse_model(node) arguments = node.arguments.first.to_a arguments = arguments.select do |child| - child.is_a?(RuboCop::AST::SymbolNode) + child.is_a?(RuboCop::AST::SymbolNode) || child.is_a?(RuboCop::AST::StrNode) end.map(&:value) @result << DTO::Migration.new( @model_class, :ignore_column, - [*arguments.map { |arg| DTO::Field.new(arg, nil) }], + [*arguments.map { |arg| DTO::Field.new(arg.to_sym, nil) }], nil ) diff --git a/spec/lib/trains/visitor/model_spec.rb b/spec/lib/trains/visitor/model_spec.rb index f5f2091..20dd650 100644 --- a/spec/lib/trains/visitor/model_spec.rb +++ b/spec/lib/trains/visitor/model_spec.rb @@ -14,12 +14,16 @@ class AccountPin < ApplicationRecord expect(parser.result).to eq( [ - Trains::DTO::Migration.new( - table_name: 'AccountPin', - modifier: :ignore_column, - fields: [Trains::DTO::Field.new(:foo, nil), Trains::DTO::Field.new(:baz, nil)], - version: nil - ) + Trains::DTO::Migration.new( + table_name: 'AccountPin', + modifier: :ignore_column, + fields: [ + Trains::DTO::Field.new(:foo, nil), + Trains::DTO::Field.new(:baz, nil), + Trains::DTO::Field.new(:what, nil) + ], + version: nil + ) ] ) end