如何反转'rails generate'?

时间:2010-11-12 03:24:00

标签: ruby ruby-on-rails-3 rails-generate

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

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

感谢。

18 个答案:

答案 0 :(得分:879)

rails destroy controller lalala
rails destroy model yadayada
rails destroy scaffold hohoho

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

rails d controller lalala
rails d model yadayada
rails d scaffold hohoho

答案 1 :(得分:43)

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

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

$ 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标志的情况下再次运行该命令。

答案 2 :(得分:22)

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

答案 3 :(得分:12)

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

答案 4 :(得分:10)

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

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

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

rails generate controller User

rails g controller User

如果要销毁用户控制器或恢复到上述操作 那么

rails destroy controller User

rails d controller User

enter image description here

答案 5 :(得分:4)

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

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

答案 6 :(得分:3)

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

对于控制器welcome

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

答案 7 :(得分:3)

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

let box = SCNBox(width:0.01, height: 0.01, length: 0.05, chamferRadius: 0.001)

zombieNode.physicsBody = SCNPhysicsBody(type: .dynamic, shape: SCNPhysicsShape(geometry:box))

如果我必须销毁此控制器,我所要做的只是将生成销毁交换,如

sceneView.debugOptions = .showPhysicsShapes

如果您想要扭转这一代,您只需将'生成'与'销毁'交换

答案 8 :(得分:3)

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

 rails d/destroy controller/model/migration xxx

答案 9 :(得分:2)

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

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

答案 10 :(得分:2)

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

  • 适用于型号:rails destroy MODEL
  • 对于控制器:rails destroy controller_name

答案 11 :(得分:2)

您可以销毁所有以相同方式创建的事物,只有很少的改变。 对于控制器,

rails d controller_name (d stands for destroy)

对于型号

rails d model_name

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

答案 12 :(得分:1)

要扭转这种局面,我们只是将其摧毁。打开终端应用程序并转到项目目录。然后,输入:

rails destroy model CamelCase
rails destroy controller CamelCase

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

答案 13 :(得分:0)

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

rails destroy scaffold Tasks

希望它对你有所帮助。

答案 14 :(得分:0)

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

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

rails destroy scaffold MODEL_NAME

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

rails destroy model MODEL_NAME

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

rails destroy controller CONTROLLER_NAME

注意:您也可以使用快捷方式d代替destroy

答案 15 :(得分:0)

删除了所选模型的脚手架

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

答案 16 :(得分:0)

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

答案 17 :(得分:0)

要反转轨道生成,请使用rails destroy

rails destroy Model

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