2018-07-12

2018-07-12  本文已影响0人  护念

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 退出控制台
参考命令

上一篇 下一篇

猜你喜欢

热点阅读