关于ruby:如何反转’rails generate’?

How do I reverse a 'rails generate'?

即删除它创建的所有文件并回滚所做的任何更改? 不一定是db,但更多的是配置文件。

例如。 自动删除在routes.rb文件中删除的模型/控制器的所有资源映射以及可能已进行更改的其他任何地方?

谢谢。


1
2
3
rails destroy controller lalala
rails destroy model yadayada
rails destroy scaffold hohoho

Rails 3.2为命令添加了一个新的d快捷方式,所以现在你可以写:

1
2
3
rails d controller lalala
rails d model yadayada
rails d scaffold hohoho


值得一提的是-p标志(假装为p)。

如果将其添加到命令中,它将只执行"测试"运行并向您显示将删除哪些文件而不实际删除它们。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$ rails d controller welcome -p

  remove  app/controllers/welcome_controller.rb
  invoke  erb
  remove    app/views/welcome
  invoke  test_unit
  remove    test/controllers/welcome_controller_test.rb
  invoke  helper
  remove    app/helpers/welcome_helper.rb
  invoke    test_unit
  remove      test/helpers/welcome_helper_test.rb
  invoke  assets
  invoke    coffee
  remove      app/assets/javascripts/welcome.js.coffee
  invoke    scss
  remove      app/assets/stylesheets/welcome.css.scss

如果您对此感到满意,请在不使用-p标志的情况下再次运行该命令。


rails destroy controller Controller_name正在返回一堆错误。为了能够销毁控制器,我必须删除routes.rb中的相关路由。附:我正在使用rails 3.1


你在使用版本控制(subversion,git,等等)吗?只是还原。如果没有 - 为什么不呢?!!


这是生成或销毁rails中的控制器或模型的原型。

1
rails generate/destroy controller/model [controller/model Name]

例如,如果您需要生成用户控制器

1
rails generate controller User

要么

1
rails g controller User

如果想破坏用户控制器或恢复到上面的操作
然后

1
rails destroy controller User

要么

1
rails d controller User

enter image description here


您可以使用rails d model/controller/migration ...来销毁或删除使用rails generate命令生成的更改。

示例:rails g model Home name:string创建名为home的模型,其属性为name。要删除从该命令生成的文件和代码,我们可以使用命令rails d model Home


您可以使用以下命令恢复rails g/generate controller/model/migration xxx输出:

1
 rails d/destroy controller/model/migration xxx

如果您希望手动删除控制器:

对于控制器welcome

1
2
3
4
5
6
7
rm app/controllers/welcome_controller.rb
rm app/views/welcome
rm test/controllers/welcome_controller_test.rb
rm app/helpers/welcome_helper.rb
rm test/helpers/welcome_helper_test.rb
rm app/assets/javascripts/welcome.js.coffee
rm app/assets/stylesheets/welcome.css.scss

假设我创建了一个名为sample的控制器,如as

1
rails generate controller sample

如果我必须销毁这个Controller,我所要做的就是将generate与destroy交换,如下所示

1
rails destroy controller sample.

如果你想扭转这一代,你所要做的就是将'generate'与'destroy'交换


你可以摧毁所有以相同方式创建的东西,除了小事改变。
对于控制器,

1
rails d controller_name (d stands for destroy)

对于模型

1
rails d model_name

您只需在迁移中输入d(destroy)而不是g(generate)


您可以通过以下方式撤消rails生成:

  • 对于型号:rails destroy MODEL
  • 对于Controller:rails destroy controller_name


如果使用rails,请使用rails d controller Users

如果你使用zeus,请使用zeus d controller Users。另一方面,如果您使用的是git或SVN,请使用提交编号还原更改。这要快得多。


为了扭转这种局面,我们只是摧毁它。打开终端应用程序并转到项目目录。然后,键入:

1
2
rails destroy model CamelCase
rails destroy controller CamelCase

CamelCase是任何型号或控制器的名称。
它将删除模型,迁移和一些相关的测试文件。 (运行命令后,您可以在终端上看到结果。)


所有代的轨道都有它们的破坏,所以,如果你通过生成器创建一个名为"tasks"的(例如)脚手架,要销毁那个ganerate的所有变化,你必须输入:

1
rails destroy scaffold Tasks

希望它能帮到你。


在还原rails generate之前,请确保先回滚迁移。

案例1:如果你想恢复脚手架然后运行这个命令 -

1
rails destroy scaffold MODEL_NAME

案例2:如果要还原模型,请运行此命令 -

1
rails destroy model MODEL_NAME

案例3:如果要还原控制器,请运行此命令 -

1
rails destroy controller CONTROLLER_NAME

注意:您也可以使用快捷键d而不是destroy


删除了所选模型的脚手架

1
bin/rails d scaffold <AccessControl> //model name


我们使用generate as
rails generate app
因此,使用destroy语句可以反转任何generate语句的重新生成。
只需用destroy替换generate即可
rails generate app可写为rails destroy app'
rails generate ____ as rails destroy ____`


反转rails生成,使用rails destroy

1
rails destroy Model

https://guides.rubyonrails.org/command_line.html#rails-destroy