即使再小心,在开发 Rails 应用的过程中也可能会犯错。幸好 Rails 提供了一些工具能够帮助我们还原操作。
举例来说,一个常见的情况是,更改控制器的名字,这时你得删除生成的文件。生成控制器时,除了控制器文件本身之外,Rails 还会生成很多其他文件(参见代码清单 3.4)。撤销生成的文件不仅仅要删除控制器文件,还要删除一些辅助的文件。(在 2.2 节和 2.3 节我们看到,rails generate 命令还会自动修改 routes.rb 文件,因此我们也想自动撤销这些修改。)在 Rails 中,我们可以使用 rails destroy 命令完成撤销操作。一般来说,下面这两个命令是相互抵消的:
$ rails generate controller StaticPages home help
$ rails destroy controller StaticPages home help
第 6 章会使用下面的命令生成模型:
$ rails generate model User name:string email:string
这个操作可以使用下面的命令撤销:
$ rails destroy model User
(在这个例子中,我们可以省略命令行中其余的参数。读到第 6 章时,看看你能否发现为什么可以这么做。)
对模型来说,还涉及到撤销迁移。第 2 章已经简要介绍了迁移,第 6 章开始会深入介绍。迁移通过下面的命令改变数据库的状态:
$ bundle exec rake db:migrate
我们可以使用下面的命令撤销前一个迁移操作:
$ bundle exec rake db:rollback
如果要回到最开始的状态,可以使用:
$ bundle exec rake db:migrate VERSION=0
你可能猜到了,把数字 0 换成其他的数字就会回到相应的版本,这些版本数字是按照迁移执行的顺序排列的。
知道这些技术,我们就可以得心应对开发过程中遇到的各种问题了。