38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
|
# File 'lib/support/model_from_sql/model_from_sql_generator.rb', line 38
def generate_migrate(table_name)
valid_columns = ActiveRecord::Base.connection.columns(table_name).select {|column| !['id', 'created_at', 'updated_at'].include?(column.name)}
ap valid_columns
add_columns = valid_columns.map do |column|
ap column
ap column.name
ap column.default
ap column.
ap column.sql_type_metadata
sql = "add_column :#{column.table_name}, :#{column.name}, :#{column.sql_type_metadata.type}"
sql += ", default: #{column.default}" if column.default && column.default.is_a?(Integer)
sql += ", default: '#{column.default}'" if column.default && column.default.is_a?(String)
sql += ", comment: '#{column.comment}'" if column.
sql += ", null: #{column.null}"
sql
end
ap add_columns
migrate_file = "db/migrate/#{Time.now.strftime("%Y%m%d%H%M%S")}_create_#{table_name}.rb"
run "touch #{migrate_file}"
run "echo 'replace\n' >> #{migrate_file}"
inject_into_file migrate_file, before: "replace\n" do "class CreateModelReplace < ActiveRecord::Migration\ndef change\n create_table :table_replace\n add_columns\nend\nend\n RUBY\n end\n gsub_file migrate_file, 'ModelReplace', table_name.camelize\n gsub_file migrate_file, 'add_columns', add_columns.join(\"\\n \")\n gsub_file migrate_file, 'table_replace', table_name.pluralize\n gsub_file migrate_file, 'replace', ''\nend\n"
|