繁体   English   中英

如何反转“轨道生成”

[英]How to reverse a 'rails generate'

我想删除它创建的所有文件并回滚所做的任何更改,但不一定是对数据库,而是对配置文件。

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

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

值得一提的是这里的-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标志的情况下再次运行该命令。

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

这是在 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

在此处输入图片说明

您是否正在使用版本控制(Subversion,git等)? 只需还原即可。 如果没有-为什么不呢?

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

例如:

rails g model Home name:string

创建一个名为home的模型,具有属性name 要删除从该命令生成的文件和代码,我们可以使用

rails d model Home

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

而且,如果您使用 Zeus,请使用zeus d controller Users

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

你可以恢复你的

rails g/generate controller/model/migration xxx

使用以下输出:

 rails d/destroy controller/model/migration xxx

如果您更喜欢手动删除控制器:

控制器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

您可以通过以下方式撤消rails generate

  • 对于模型: rails destroy MODEL
  • 对于控制器: rails destroy controller_name

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

rails generate controller sample

如果我必须销毁这个控制器,我所要做的就是用destroy交换generate ,如

rails destroy controller sample.

如果您想反转生成,您所要做的就是将generatedestroy交换。

你可以摧毁所有以相同方式创造的东西,除了一点点变化。 对于控制器,

rails d controller_name (d stands for destroy)

型号

rails d model_name

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

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

rails destroy model CamelCase
rails destroy controller CamelCase

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

所有版本的 rails 都有一个“销毁”,因此,如果您使用生成器创建(例如)名为“任务”的脚手架,要销毁该生成步骤的所有更改,您必须键入:

rails destroy scaffold Tasks

希望对你有帮助。

在恢复rails generate之前,请确保先回滚迁移

情况 1:如果要还原脚手架,请运行以下命令:

rails destroy scaffold MODEL_NAME

情况 2:如果要恢复模型,请运行以下命令:

rails destroy model MODEL_NAME

情况 3:如果要恢复控制器,请运行以下命令:

rails destroy controller CONTROLLER_NAME

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

移除了选定模型的脚手架:

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

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

要反转rails generate ,请使用rails destroy

rails destroy Model

有关更多信息,请参阅“ rails destroy ”。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM