revert 用法
用法一:直接revert 迁移文件
require_relative 'xxxxx_yyyyzzzzddd.rb' #引入迁移文件
class XMagrationClass < ActiveRecord::Migration[5.1]
def change
revert revert的迁移文件对应的类
end
end
用法二:revert块中放代码
# 只不过这里的 块中的操作是反的
class RevertTest3 < ActiveRecord::Migration[5.1]
def change
revert do # revert 块中直接放 之前执行的内容。它就能反转回去
create_table :foos do |t|
t.string :name
t.integer :price
end
reversible do |dir|
dir.up do
execute <<-SQL
alter table foos
add constraint Po
check (price > 0);
SQL
end
dir.down do
execute <<-SQL
alter table foos
drop constraint Po;
SQL
end
end
add_index :foos,:name
end
end
end
用途:
1、个人感觉可以利用,它可撤销某个具体迁移文件的特性,去撤销很久之前创建的迁移
2、由于它也可接块,可以用来撤销某个迁移中的,小过失(弥补小缺陷),去部分回滚。
关于reversible
它的主要作用是,编写迁移时,同时编写退路(回滚),主要用于,rails不能自己执行回滚,需要人为辅助的时候可用它。
reversible do |dir|
dir.up do
execute <<-SQL
alter table foos
add constraint Po
check (price > 0);
SQL
end
dir.down do
execute <<-SQL
alter table foos
drop constraint Po;
SQL
end
end
schema理解
1、迁移不是最重要的,重要的是生成的schema文件
2、生成的schema文件可以直接用于部署环境/测试环境,而不用执行迁移
psql的几个命令
\l
列出所有数据库
\dt
列出当前数据库所有数据表
\d table_name
列出表名相关信息
\q
退出控制台
参考命令