ror:撤销操作

ror:Ruby on Rails

Rails使用强大的命令生成文件及代码,例如生成一个控制器:

➜  microblog git:(static-pages) rails generate controller Foo bar baz          
Running via Spring preloader in process 13567
Expected string default value for '--jbuilder'; got true (boolean)
Expected string default value for '--helper'; got true (boolean)
Expected string default value for '--assets'; got true (boolean)
      create  app/controllers/foo_controller.rb
       route  get 'foo/baz'
       route  get 'foo/bar'
      invoke  erb
      create    app/views/foo
      create    app/views/foo/bar.html.erb
      create    app/views/foo/baz.html.erb
      invoke  test_unit
      create    test/controllers/foo_controller_test.rb
      invoke  helper
      create    app/helpers/foo_helper.rb
      invoke    test_unit
      invoke  assets
      invoke    coffee
      create      app/assets/javascripts/foo.coffee
      invoke    scss
      create      app/assets/stylesheets/foo.scss

但是,或者命令写错了,或者我们不需要这个控制器了,此时该如何撤销呢?
Rails一个命令会生成很多文件,是要挨个文件夹找到并删除么?那只能说明Rails做的太差了。好在,Rails还不差,同样可以使用命令进行撤销。


一般来说,下面的命令是相互抵消的:

生成控制器命令

$ rails generate controller Foo bar baz
$ rails destroy controller Foo bar baz

生成模型命令

$ rails generate model User name:string email:string
$ rails destroy model User

迁移数据库

$ rails db:migrate
$ rails db:rollback

如果要回到最开始的状态,可以使用:

$ rails db:migrate VERSION=0
把数字0换成其他数字就会回到相应的版本,这些版本数字是按照迁移执行的顺序排列的。

知道这些,我们就能应对开发过程中遇到的问题了。


现在我们可以回过头看看撤销前面的Controller了:

➜  microblog git:(static-pages) ✗ rails destroy controller Foo
Running via Spring preloader in process 13621
Expected string default value for '--jbuilder'; got true (boolean)
Expected string default value for '--helper'; got true (boolean)
Expected string default value for '--assets'; got true (boolean)
      remove  app/controllers/foo_controller.rb
      invoke  erb
      remove    app/views/foo
      invoke  test_unit
      remove    test/controllers/foo_controller_test.rb
      invoke  helper
      remove    app/helpers/foo_helper.rb
      invoke    test_unit
      invoke  assets
      invoke    coffee
      remove      app/assets/javascripts/foo.coffee
      invoke    scss
      remove      app/assets/stylesheets/foo.scss

你可能感兴趣的:(ror:撤销操作)