Rails向数据库添加新字段和修改字段
目录
添加字段
控制台上执行下面的命令
rails g migration addColumnToBlackIps send_time:datetime
会生成文件db/migrate/20210529131328_add_column_to_black_ips.rb
class AddColumnToBlackIps < ActiveRecord::Migration[5.0]
def change
add_column :black_ips, :send_time, :datetime
add_column :black_ips, :black_tools, :boolean, default: false ,comment:'黑客工具 false:否 true:是'
end
end
执行迁移
rake db:migrate
执行结果
CREATE TABLE `black_ips` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`ip` varchar(255) DEFAULT NULL,
`created_at` datetime NOT NULL,
`updated_at` datetime NOT NULL,
`send_time` datetime DEFAULT NULL,
`black_tools` tinyint(1) DEFAULT '0' COMMENT '黑客工具 false:否 true:是',
PRIMARY KEY (`id`),
KEY `index_black_ips_on_ip` (`ip`)
) ENGINE=InnoDB AUTO_INCREMENT=6121 DEFAULT CHARSET=utf8;
看一下表里会在schema_migrations表里添加一条已经迁移过的记录
值会和迁移文件名一致。
撤消最后一次迁移
rake db:rollback
修改字段
添加迁移文件
rails g migration change_column_is_wulianwang_black_tools_to_black_ips_tags
编写迁移文件
class ChangeColumnIsWulianwangBlackToolsToBlackIpsTags < ActiveRecord::Migration[5.0]
def change
change_column :black_ips_tags, :is_wulianwang, :integer, limit: 1, default: 0,comment: '物联网设备 0:否 1:是 -1:变为否,待查询后删除'
change_column :black_ips_tags, :black_tools, :integer, limit: 1, default: 0,comment: '黑客工具 0:否 1:是 -1:变为否,待查询后删除'
end
end
执行迁移
rake db:migrate
修改前是bool类型
修改后为int
[Haima的博客]
http://www.cnblogs.com/haima/